关于js日期转化为毫秒数“节省20%的效率和和节省9个字符“问题

  最近在看松散耦合可定制百度的开源框架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%效率。