关于js日期转化为毫秒数“节省20%的效率和和节省9个字符“问题


Posted in Javascript onMarch 01, 2012

最近在看松散耦合可定制百度的开源框架tangram.js目光突然就聚焦在一种获得毫秒数的写法:
(+new Date())
其实这种写法也没什么就是用运算符转化日期为number型,于是我肯定这种写法没有日期原生写法(new Date().getTime())效率高 :
于是做了下面测试:

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8" /> 
<title>关于Date转化成毫秒数的测试</title> 
<style type="text/css"> 
<!-- 
body{font-size:12px;} 
table{border-top:1px solid #dfdfdf;border-right:1px solid #dfdfdf;} 
th,td{padding:5px;text-align:center;} 
th{background:#444;color:#fff;} 
td{border-left:1px solid #dfdfdf;border-bottom:1px solid #dfdfdf;} 
//--> 
</style> 
</head> 
<body> 
<script language="javascript" type="text/javascript"> 
// <![CDATA[ 
(function () { 
var bank=function(){}; 
var d1,d2,d3,temp; 
var d1=new Date(); 
for(var i=0;i<1000000;i++){ 
temp=new Date().getTime(); 
} 
var d2=new Date(); 
for(var i=0;i<1000000;i++){ 
temp=(+new Date()); 
} 
var d3=new Date(); 
//打印 
document.write('第一次循环所用时间:'+(d2-d1)+'<br/>第一次循环所用时间:'+(d3-d2)); 
})(); 
// ]]> 
</script> 
</body> 
</html>

分别循环一百万次次后在不同浏览器的结果如下:
IE6:
第一次循环所用时间:3406
第一次循环所用时间:5313
IE7:
第一次循环所用时间:3594
第一次循环所用时间:5000
IE8:
第一次循环所用时间:2735
第一次循环所用时间:3453
chrome:
第一次循环所用时间:210
第一次循环所用时间:337
opera\safari\firefox
基本上相差 100ms,但仍是最后一种慢

结论:证明我是正确的+new Date()写法比new Date().getTime()效率低,原因进行了类型转化,通常我们常用的数量级(一万次以内)不是很大,所以在个浏览器几乎不用考虑执行效率的问题,所以第一种写法用起来计较好,还节省了9个字符。当用js游戏开发时,当用到大数量级的时,建议原生写法。可以提高20%效率。

Javascript 相关文章推荐
将函数的实际参数转换成数组的方法
Jan 25 Javascript
jquery验证手机号码、邮箱格式是否正确示例代码
Jul 28 Javascript
input:checkbox多选框实现单选效果跟radio一样
Jun 16 Javascript
对JavaScript中this指针的新理解分享
Jan 31 Javascript
html+js+highcharts绘制圆饼图表的简单实例
Aug 04 Javascript
如何防止INPUT按回车自动提交表单FORM
Dec 06 Javascript
Jquery Easyui日历组件Calender使用详解(23)
Dec 18 Javascript
原生JS仿QQ阅读点击展开、收起效果
Mar 08 Javascript
详解可以用在VS Code中的正则表达式小技巧
May 14 Javascript
jQuery与原生JavaScript选择HTML元素集合用法对比分析
Nov 26 jQuery
JavaScript链式调用原理与实现方法详解
May 16 Javascript
JavaScript实现页面动态验证码的实现示例
Mar 23 Javascript
JavaScript中使用构造器创建对象无需new的情况说明
Mar 01 #Javascript
JavaScript中的变量声明早于赋值分析
Mar 01 #Javascript
JavaScript中函数声明优先于变量声明的实例分析
Mar 01 #Javascript
Jquery提交表单 Form.js官方插件介绍
Mar 01 #Javascript
jquery.artwl.thickbox.js  一个非常简单好用的jQuery弹出层插件
Mar 01 #Javascript
jQuery AJAX实现调用页面后台方法和web服务定义的方法分享
Mar 01 #Javascript
javascript中IE浏览器不支持NEW DATE()带参数的解决方法
Mar 01 #Javascript
You might like
php explode函数实例代码
2012/02/27 PHP
360通用php防护代码(使用操作详解)
2013/06/18 PHP
十个PHP高级应用技巧果断收藏
2015/09/25 PHP
根据key删除数组中指定的元素实现方法
2017/03/02 PHP
php使用环形链表解决约瑟夫问题完整示例
2018/08/07 PHP
判断脚本加载是否完成的方法
2009/05/26 Javascript
jQuery+ajax实现顶一下,踩一下效果
2010/07/17 Javascript
基于jQuery的动态增删改查表格信息,可左键/右键提示(原创自Zjmainstay)
2012/07/31 Javascript
重构Javascript代码示例(重构前后对比)
2013/01/23 Javascript
JS中的数组的sort方法使用示例
2014/01/22 Javascript
深入理解JavaScript系列(33):设计模式之策略模式详解
2015/03/03 Javascript
TypeScript具有的几个不同特质
2015/04/07 Javascript
Highcharts入门之简介
2016/08/02 Javascript
Angular懒加载机制刷新后无法回退的快速解决方法
2016/08/30 Javascript
vue2+el-menu实现路由跳转及当前项的设置方法实例
2017/11/07 Javascript
JS小球抛物线轨迹运动的两种实现方法详解
2017/12/20 Javascript
js实现无缝滚动双图切换效果
2019/07/09 Javascript
layui-table获得当前行的上/下一行数据的例子
2019/09/24 Javascript
微信小程序中weui用法解析
2019/10/21 Javascript
原生js实现随机点名
2020/07/05 Javascript
Vue 构造选项 - 进阶使用说明
2020/08/14 Javascript
python文件读写操作与linux shell变量命令交互执行的方法
2015/01/14 Python
Python中的descriptor描述器简明使用指南
2016/06/02 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
2018/04/23 Python
PyQT5速成教程之Qt Designer介绍与入门
2020/11/02 Python
Python爬虫UA伪装爬取的实例讲解
2021/02/19 Python
input元素的url类型和email类型简介
2012/07/11 HTML / CSS
尽职尽责村干部自我鉴定
2014/01/23 职场文书
元旦活动感言
2014/03/08 职场文书
学校个人对照检查材料
2014/08/26 职场文书
2015年12.4全国法制宣传日活动总结
2015/03/24 职场文书
敬老院义诊活动总结
2015/05/07 职场文书
护士业务学习心得体会
2016/01/25 职场文书
Python中使用subprocess库创建附加进程
2021/05/11 Python
解决numpy和torch数据类型转化的问题
2021/05/23 Python
小程序与后端Java接口交互实现HelloWorld入门
2021/07/09 Java/Android