关于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无缝滚动代码
Jan 03 Javascript
jQuery 性能优化手册 推荐
Feb 23 Javascript
javascript实现完美拖拽效果
May 06 Javascript
基于jQuery实现自动轮播旋转木马特效
Nov 02 Javascript
深入浅析AngularJS和DataModel
Feb 16 Javascript
javascirpt实现2个iframe之间传值的方法
Jun 30 Javascript
Javascript字符串常用方法详解
Jul 21 Javascript
PHP抓取HTTPS内容和错误处理的方法
Sep 30 Javascript
解决BootStrap Fileinput手机图片上传显示旋转问题
Jun 01 Javascript
在原生不支持的旧环境中添加兼容的Object.keys实现方法
Sep 11 Javascript
vue实现日历表格(element-ui)
Sep 24 Javascript
React服务端渲染原理解析与实践
Mar 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实现Ftp用户的在线管理
2012/02/16 PHP
php 中的closure用法详解
2017/06/12 PHP
js 获取子节点函数 (兼容FF与IE)
2010/04/18 Javascript
jQuery ready函数滥用分析
2011/02/16 Javascript
基于Jquery插件开发之图片放大镜效果(仿淘宝)
2011/11/19 Javascript
一个页面放2段图片滚动代码出现冲突的问题如何解决
2012/12/21 Javascript
ExtJs默认的字体大小改变的几种方法(自己整理)
2013/04/18 Javascript
JavaScript获取table中某一列的值的方法
2014/05/06 Javascript
轻量级的原生js日历插件calendar.js使用指南
2015/04/28 Javascript
jQuery实现图片与文字描述左右滑动自动切换的方法
2015/07/27 Javascript
javascript字符串对象常用api函数小结(连接,替换,分割,转换等)
2016/09/20 Javascript
jQuery事件用法详解
2016/10/06 Javascript
BootStrap框架中的data-[ ]自定义属性理解(推荐)
2017/02/14 Javascript
基于canvas的二维码邀请函生成插件
2017/02/14 Javascript
get  post jsonp三种数据交互形式实例详解
2017/08/25 Javascript
移动端效果之Swiper详解
2017/10/09 Javascript
vue.js项目打包上线的图文教程
2017/11/16 Javascript
jQuery实现鼠标滑过商品小图片上显示对应大图片功能【测试可用】
2018/04/27 jQuery
解决vue同一slot在组件中渲染多次的问题
2018/09/06 Javascript
微信小程序解除10个请求并发限制
2018/12/18 Javascript
Vue中img的src是动态渲染时不显示的解决
2019/11/14 Javascript
node脚手架搭建服务器实现token验证的方法
2021/01/20 Javascript
[00:35]2016完美“圣”典风云人物:冷冷宣传片
2016/12/08 DOTA
[08:38]DOTA2-DPC中国联赛 正赛 VG vs Elephant 选手采访
2021/03/11 DOTA
Python中import导入上一级目录模块及循环import问题的解决
2016/06/04 Python
Python爬取京东的商品分类与链接
2016/08/26 Python
Python内置方法实现字符串的秘钥加解密(推荐)
2019/12/09 Python
Python pexpect模块及shell脚本except原理解析
2020/08/03 Python
python在一个范围内取随机数的简单实例
2020/08/16 Python
佛罗里达州印第安河新鲜水果:Hale Groves
2017/02/20 全球购物
国培计划培训感言
2014/03/11 职场文书
大学生学期自我鉴定
2014/03/19 职场文书
工程技术员岗位职责
2015/04/11 职场文书
老兵退伍感言
2015/08/03 职场文书
CSS3 实现NES游戏机的示例代码
2021/04/21 HTML / CSS
html中两种获取标签内的值的方法
2022/06/10 HTML / CSS