关于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+CSS相对定位实现的下拉菜单
Oct 06 Javascript
js正则表达式验证邮件地址
Nov 12 Javascript
Node.js 文件夹目录结构创建实例代码
Jul 08 Javascript
javascript实现根据汉字获取简拼
Sep 25 Javascript
webuploader模态框ueditor显示问题解决方法
Dec 27 Javascript
JavaScript 程序错误Cannot use 'in' operator to search的解决方法
Jul 10 Javascript
js截取字符串功能的实现方法
Sep 27 Javascript
vue基础之使用get、post、jsonp实现交互功能示例
Mar 12 Javascript
微信小程序 Storage更新详解
Jul 16 Javascript
Vue ElementUI实现:限制输入框只能输入正整数的问题
Jul 31 Javascript
JavaScript实现简单日历效果
Sep 11 Javascript
jquery实现抽奖功能
Oct 22 jQuery
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
可快速识别放射性物质-国外大神教你diy一个开放式辐射探测器
2020/03/12 无线电
如何批量替换相对地址为绝对地址(利用bat批处理实现)
2013/05/27 PHP
PHP打开和关闭文件操作函数总结
2014/11/18 PHP
Laravel 添加多语言提示信息的方法
2019/09/29 PHP
avascript中的自执行匿名函数应用示例
2014/09/15 Javascript
jQuery中prev()方法用法实例
2015/01/08 Javascript
JavaScript结合AJAX_stream实现流式显示
2015/01/08 Javascript
JS实现定时自动关闭DIV层提示框的方法
2015/05/11 Javascript
js去字符串前后空格的实现方法
2016/02/26 Javascript
JS实现可编辑的后台管理菜单功能【附demo源码下载】
2016/09/13 Javascript
jQuery实现拖动剪裁图片作为头像
2016/12/28 Javascript
JS实现的按钮点击颜色切换功能示例
2017/10/19 Javascript
微信小程序wx.uploadfile 本地文件转base64的实现代码
2018/06/28 Javascript
详解vue 数组和对象渲染问题
2018/09/21 Javascript
JavaScript数据结构之栈实例用法
2019/01/18 Javascript
浅谈JSON5解决了JSON的两大痛点
2020/12/14 Javascript
[01:14:34]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第一局
2016/02/28 DOTA
python调用windows api锁定计算机示例
2014/04/17 Python
Python中实现对list做减法操作介绍
2015/01/09 Python
python difflib模块示例讲解
2017/09/13 Python
python使用多进程的实例详解
2018/09/19 Python
python利用ffmpeg进行录制屏幕的方法
2019/01/10 Python
说说如何遍历Python列表的方法示例
2019/02/11 Python
django框架forms组件用法实例详解
2019/12/10 Python
python如何调用java类
2020/07/05 Python
Python基于xlutils修改表格内容过程解析
2020/07/28 Python
html5 乒乓球(碰撞检测)实例二
2013/07/25 HTML / CSS
工程师求职简历的自我评价分享
2013/10/10 职场文书
会计核算科岗位职责
2014/03/19 职场文书
技术合作协议书范本
2014/04/18 职场文书
团日活动总结书
2014/05/08 职场文书
2014年党课学习材料
2014/05/11 职场文书
企业仓管员岗位职责
2014/06/15 职场文书
学校政风行风自查自纠报告
2014/10/21 职场文书
2015年小学开学寄语
2015/02/27 职场文书
2015年酒店客房部工作总结
2015/04/25 职场文书