关于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 相关文章推荐
模仿JQuery.extend函数扩展自己对象的js代码
Dec 09 Javascript
百度Popup.js弹出框进化版 拖拽小框架发布 兼容IE6/7/8,Firefox,Chrome
Apr 13 Javascript
jquery 之 $().hover(func1, funct2)使用方法
Jun 14 Javascript
javascript变量作用域使用中常见错误总结
Mar 26 Javascript
关于JS字符串函数String.replace()
Apr 07 Javascript
JavaScript数据类型判定的总结笔记
Jul 31 Javascript
vue-router实现组件间的跳转(参数传递)
Nov 07 Javascript
浅谈SpringMVC中post checkbox 多选框value的值(隐藏域方式)
Jan 08 Javascript
JavaScript动态加载重复绑定问题
Apr 01 Javascript
详解Vue中watch的高级用法
May 02 Javascript
vue自定义指令的创建和使用方法实例分析
Dec 04 Javascript
详解vue之自行实现派发与广播(dispatch与broadcast)
Jan 19 Vue.js
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去掉字符串的最后一个字符附substr()的用法
2011/03/23 PHP
通达OA公共代码 php常用检测函数
2011/12/14 PHP
探讨:如何使用PhpDocumentor生成文档
2013/06/25 PHP
php+mysql不用递归实现的无限级分类实例(非递归)
2014/07/08 PHP
php实现倒计时效果
2015/12/19 PHP
使用Zttp简化Guzzle 调用
2017/07/02 PHP
jquery 关键字“拖曳搜索”之“拖曳”以及 图片“提示自适应放大”效果 的实现
2010/04/18 Javascript
js中生成map对象的方法
2014/01/09 Javascript
对Jquery中的ajax再封装,简化操作示例
2014/02/12 Javascript
javascript中解析四则运算表达式的算法和示例
2014/08/11 Javascript
浅谈javascript中自定义模版
2015/01/29 Javascript
全面解析Bootstrap表单使用方法(表单控件状态)
2015/11/24 Javascript
js实现的星星评分功能函数
2015/12/09 Javascript
JS实现手写parseInt的方法示例
2017/09/24 Javascript
Javascript获取某个月的天数
2018/05/30 Javascript
React router动态加载组件之适配器模式的应用详解
2018/09/12 Javascript
WebGL学习教程之Three.js学习笔记(第一篇)
2019/04/25 Javascript
微信小程序如何访问公众号文章
2019/07/08 Javascript
javascript设计模式 ? 解释器模式原理与用法实例分析
2020/04/17 Javascript
Ant design vue table 单击行选中 勾选checkbox教程
2020/10/24 Javascript
[56:00]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第二场
2018/04/10 DOTA
[01:02:04]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
手把手教你python实现SVM算法
2017/12/27 Python
Python 通配符删除文件的实例
2018/04/24 Python
对python中的iter()函数与next()函数详解
2018/10/18 Python
Python单元测试及unittest框架用法实例解析
2020/07/09 Python
如何基于Python pygame实现动画跑马灯
2020/11/18 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
2021/01/15 Python
贝玲妃美国官方网站:Benefit美国
2016/08/28 全球购物
麦德龙官方海外旗舰店:德国麦德龙超市
2017/12/23 全球购物
美国在线眼镜店:GlassesShop
2018/11/15 全球购物
大学生的四年学习自我评价
2013/12/13 职场文书
2014年党的群众路线教育实践活动整改措施(个人版)
2014/09/25 职场文书
无财产离婚协议书范本
2014/10/28 职场文书
2015年党员个人自我评价
2015/03/03 职场文书
地心历险记观后感
2015/06/15 职场文书