关于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 lazyload延迟加载技术的实现原理分析
Jan 24 Javascript
jquery 读取页面load get post ajax 四种方式代码写法
Apr 02 Javascript
event.X和event.clientX的区别分析
Oct 06 Javascript
JSON语法五大要素图文介绍
Dec 04 Javascript
FF IE浏览器修改标签透明度的方法
Jan 27 Javascript
jquery日历插件datepicker用法分析
Jan 22 Javascript
关于jquery中动态增加select,事件无效的快速解决方法
Aug 29 Javascript
基于iscroll.js实现下拉刷新和上拉加载效果
Nov 28 Javascript
jQuery 实现图片的依次加载图片功能
Jul 06 jQuery
JavaScript中Hoisting详解 (变量提升与函数声明提升)
Aug 18 Javascript
JS实现在文本指定位置插入内容的简单示例
Dec 22 Javascript
vue-cli3 取消eslint校验代码的解决办法
Jan 16 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
国王的咖啡这么大来头,名字的由来是什么
2021/03/03 咖啡文化
PHP 中文乱码解决办法总结分析
2009/07/30 PHP
php数据库抽象层 PDO
2011/05/07 PHP
PHP-CGI进程CPU 100% 与 file_get_contents 函数的关系分析
2011/08/15 PHP
php生成二维码时出现中文乱码的解决方法
2014/12/18 PHP
用PHP代码给图片加水印
2015/07/01 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
2016/09/11 PHP
PHP Redis扩展无法加载的问题解决方法
2019/08/22 PHP
mouse_on_title.js
2006/08/25 Javascript
JavaScript不刷新实现浏览器的前进后退功能
2014/11/05 Javascript
javascript定义变量时带var与不带var的区别分析
2015/01/12 Javascript
JS实现图片高亮展示效果实例
2015/11/24 Javascript
轻松学习jQuery插件EasyUI EasyUI创建树形网络(1)
2015/11/30 Javascript
jQuery事件绑定用法详解(附bind和live的区别)
2016/01/19 Javascript
使用jQuery调用XML实现无刷新即时聊天
2016/08/07 Javascript
JS获取当前使用的浏览器名字以及版本号实现方法
2016/08/19 Javascript
Vue精简版风格指南(推荐)
2018/01/30 Javascript
搭建element-ui的Vue前端工程操作实例
2018/02/23 Javascript
node实现基于token的身份验证
2018/04/09 Javascript
React Native中Mobx的使用方法详解
2018/12/04 Javascript
详解vue或uni-app的跨域问题解决方案
2020/02/21 Javascript
一则python3的简单爬虫代码
2014/05/26 Python
Python内置的字符串处理函数详细整理(覆盖日常所用)
2014/08/19 Python
介绍Python中的一些高级编程技巧
2015/04/02 Python
完美解决Python matplotlib绘图时汉字显示不正常的问题
2019/01/29 Python
Pytorch中的自动求梯度机制和Variable类实例
2020/02/29 Python
HTML5移动端手机网站开发流程
2016/04/25 HTML / CSS
美国在线宠物用品商店:Entirely Pets
2017/01/01 全球购物
设计部经理的岗位职责
2013/11/16 职场文书
服装设计专业自荐信
2014/06/17 职场文书
介绍信怎么写
2015/01/30 职场文书
聊聊golang中多个defer的执行顺序
2021/05/08 Golang
Python3接口性能测试实例代码
2021/06/20 Python
Pandas搭配lambda组合使用详解
2022/01/22 Python
SONY600GR,国产收音机厂商永远的痛
2022/04/05 无线电
使用refresh_token实现无感刷新页面
2022/04/26 Javascript