关于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 相关文章推荐
js中各浏览器中鼠标按键值的差异
Apr 07 Javascript
使用js+jquery实现无限极联动
May 23 Javascript
jQuery动态设置form表单的enctype值(实现代码)
Jul 04 Javascript
JS使用post提交的两种方式
Dec 03 Javascript
jQuery中通过ajax的get()函数读取页面的方法
Feb 29 Javascript
js检查是否关闭浏览器的方法
Aug 02 Javascript
js 原型对象和原型链理解
Feb 09 Javascript
让bootstrap的carousel支持滑动滚屏的实现代码
Nov 27 Javascript
javascript字体颜色控件的开发 JS实现字体控制
Nov 27 Javascript
使用Vue写一个datepicker的示例
Jan 27 Javascript
Vue用v-for给src属性赋值的方法
Mar 03 Javascript
vue-cli3中配置alias和打包加hash值操作
Sep 04 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设计模式之命令模式使用示例
2014/03/02 PHP
PHP加Nginx实现动态裁剪图片方案
2014/03/10 PHP
不使用php api函数实现数组的交换排序示例
2014/04/13 PHP
php对二维数组进行相关操作(排序、转换、去空白等)
2015/11/04 PHP
浅谈PHP中的错误处理和异常处理
2017/02/04 PHP
检测是否已安装 .NET Framework 3.5的js脚本
2009/02/14 Javascript
js 全兼容可高亮二级缓冲折叠菜单
2010/06/04 Javascript
js 判断一个元素是否在页面中存在
2012/12/27 Javascript
一个JS函数搞定网页标题(title)闪动效果
2014/05/13 Javascript
网页中JS函数自动执行常用三种方法
2016/03/30 Javascript
推荐三款日期选择插件(My97DatePicker、jquery.datepicker、Mobiscroll)
2017/04/21 jQuery
node.js 中间件express-session使用详解
2017/05/20 Javascript
前端跨域的几种解决方式总结(推荐)
2017/08/16 Javascript
VueJs使用Amaze ui调整列表和内容页面
2017/11/30 Javascript
在微信小程序中使用图表的方法示例
2019/04/25 Javascript
JavaScript实现alert弹框效果
2020/11/19 Javascript
Python获取当前公网ip并自动断开宽带连接实例代码
2018/01/12 Python
Python基于TCP实现会聊天的小机器人功能示例
2018/04/09 Python
python 分离文件名和路径以及分离文件名和后缀的方法
2018/10/21 Python
python画图把时间作为横坐标的方法
2019/07/07 Python
使用django的ORM框架按月统计近一年内的数据方法
2019/07/18 Python
TensorFlow 显存使用机制详解
2020/02/03 Python
Python基础之字符串常见操作经典实例详解
2020/02/26 Python
关于Python解包知识点总结
2020/05/05 Python
Python坐标轴操作及设置代码实例
2020/06/04 Python
Keras搭建自编码器操作
2020/07/03 Python
python工具快速为音视频自动生成字幕(使用说明)
2021/01/27 Python
原生 JS+CSS+HTML 实现时序图的方法
2019/07/31 HTML / CSS
德国购买门票网站:ADticket.de
2019/10/31 全球购物
职工趣味运动会方案
2014/02/10 职场文书
大学生简历求职信
2014/06/24 职场文书
十八大宣传标语
2014/10/09 职场文书
个人工作作风整改措施思想汇报
2014/10/13 职场文书
清洁工个人总结
2015/03/04 职场文书
求职信:求职应该注意的问题
2019/04/24 职场文书
JS 基本概念详细介绍
2021/10/16 Javascript