关于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 相关文章推荐
Exjs 入门篇
Apr 07 Javascript
使用jQuery清空file文件域的解决方案
Apr 12 Javascript
js读取配置文件自写
Feb 11 Javascript
JS+Canvas实现的俄罗斯方块游戏完整实例
Dec 12 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
Dec 28 Javascript
BootStrap实现鼠标悬停下拉列表功能
Feb 17 Javascript
浅谈JS对象添加getter与setter的5种方法
Jun 09 Javascript
bootstrapTable+ajax加载数据 refresh更新数据
Aug 31 Javascript
解决JS表单验证只有第一个IF起作用的问题
Dec 04 Javascript
js实现图片放大并跟随鼠标移动特效
Jan 18 Javascript
移动端底部导航固定配合vue-router实现组件切换功能
Jun 13 Javascript
node.js实现上传文件功能
Jul 15 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/10/23 PHP
php实现专业获取网站SEO信息类实例
2015/04/02 PHP
SESSION存放在数据库用法实例
2015/08/08 PHP
PHP中用Trait封装单例模式的实现
2019/12/18 PHP
JavaScript Cookie显示用户上次访问的时间和次数
2009/12/08 Javascript
jquery photoFrame 图片边框美化显示插件
2010/06/28 Javascript
JavaScript字符串String和Array操作的有趣方法
2012/12/18 Javascript
Jquery多选下拉列表插件jquery multiselect功能介绍及使用
2013/05/24 Javascript
Node.js 学习笔记之简介、安装及配置
2015/03/03 Javascript
JavaScript返回网页中超链接数量的方法
2015/04/03 Javascript
JavaScript面对国际化编程时的一些建议
2015/06/24 Javascript
javascript中call apply 与 bind方法详解
2016/03/10 Javascript
jQuery下拉菜单的实现代码
2016/11/03 Javascript
JS实现随机颜色的3种方法与颜色格式的转化
2017/01/05 Javascript
js链表操作(实例讲解)
2017/08/29 Javascript
JS简单实现滑动加载数据的方法示例
2017/10/18 Javascript
微信小程序结合Storage实现搜索历史效果
2019/05/18 Javascript
JS中async/await实现异步调用的方法
2019/08/28 Javascript
[02:43]DOTA2英雄基础教程 德鲁伊
2014/01/13 DOTA
python快速查找算法应用实例
2014/09/26 Python
用Python实现一个简单的能够上传下载的HTTP服务器
2015/05/05 Python
浅析Python中yield关键词的作用与用法
2016/11/29 Python
python多进程使用及线程池的使用方法代码详解
2018/10/24 Python
python模糊图片过滤的方法
2018/12/14 Python
Django Rest framework解析器和渲染器详解
2019/07/25 Python
python 的numpy库中的mean()函数用法介绍
2020/03/03 Python
Python 实现自动完成A4标签排版打印功能
2020/04/09 Python
如何将tensorflow训练好的模型移植到Android (MNIST手写数字识别)
2020/04/22 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
2020/05/25 Python
Windows下Sqlmap环境安装教程详解
2020/08/04 Python
采用怎样的方法保证数据的完整性
2013/12/02 面试题
大学生旷课检讨书1000字
2015/02/19 职场文书
2015年“我们的节日·重阳节”活动总结
2015/07/29 职场文书
2016年大学生党员公开承诺书
2016/03/24 职场文书
详解Java实现设计模式之责任链模式
2021/06/23 Java/Android
centos环境下nginx高可用集群的搭建指南
2022/07/23 Servers