關(guān)于js日期轉(zhuǎn)化為毫秒數(shù)“節(jié)省20%的效率和和節(jié)省9個(gè)字符“問題
更新時(shí)間:2012年03月01日 22:38:12 作者:
最近在看松散耦合可定制百度的開源框架tangram.js目光突然就聚焦在一種獲得毫秒數(shù)的寫法
最近在看松散耦合可定制百度的開源框架tangram.js目光突然就聚焦在一種獲得毫秒數(shù)的寫法:
(+new Date())
其實(shí)這種寫法也沒什么就是用運(yùn)算符轉(zhuǎn)化日期為number型,于是我肯定這種寫法沒有日期原生寫法(new Date().getTime())效率高 :
于是做了下面測(cè)試:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>關(guān)于Date轉(zhuǎn)化成毫秒數(shù)的測(cè)試</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('第一次循環(huán)所用時(shí)間:'+(d2-d1)+'<br/>第一次循環(huán)所用時(shí)間:'+(d3-d2));
})();
// ]]>
</script>
</body>
</html>
分別循環(huán)一百萬(wàn)次次后在不同瀏覽器的結(jié)果如下:
IE6:
第一次循環(huán)所用時(shí)間:3406
第一次循環(huán)所用時(shí)間:5313
IE7:
第一次循環(huán)所用時(shí)間:3594
第一次循環(huán)所用時(shí)間:5000
IE8:
第一次循環(huán)所用時(shí)間:2735
第一次循環(huán)所用時(shí)間:3453
chrome:
第一次循環(huán)所用時(shí)間:210
第一次循環(huán)所用時(shí)間:337
opera\safari\firefox
基本上相差 100ms,但仍是最后一種慢
結(jié)論:證明我是正確的+new Date()寫法比new Date().getTime()效率低,原因進(jìn)行了類型轉(zhuǎn)化,通常我們常用的數(shù)量級(jí)(一萬(wàn)次以內(nèi))不是很大,所以在個(gè)瀏覽器幾乎不用考慮執(zhí)行效率的問題,所以第一種寫法用起來(lái)計(jì)較好,還節(jié)省了9個(gè)字符。當(dāng)用js游戲開發(fā)時(shí),當(dāng)用到大數(shù)量級(jí)的時(shí),建議原生寫法??梢蕴岣?0%效率。
(+new Date())
其實(shí)這種寫法也沒什么就是用運(yùn)算符轉(zhuǎn)化日期為number型,于是我肯定這種寫法沒有日期原生寫法(new Date().getTime())效率高 :
于是做了下面測(cè)試:
復(fù)制代碼 代碼如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>關(guān)于Date轉(zhuǎn)化成毫秒數(shù)的測(cè)試</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('第一次循環(huán)所用時(shí)間:'+(d2-d1)+'<br/>第一次循環(huán)所用時(shí)間:'+(d3-d2));
})();
// ]]>
</script>
</body>
</html>
分別循環(huán)一百萬(wàn)次次后在不同瀏覽器的結(jié)果如下:
IE6:
第一次循環(huán)所用時(shí)間:3406
第一次循環(huán)所用時(shí)間:5313
IE7:
第一次循環(huán)所用時(shí)間:3594
第一次循環(huán)所用時(shí)間:5000
IE8:
第一次循環(huán)所用時(shí)間:2735
第一次循環(huán)所用時(shí)間:3453
chrome:
第一次循環(huán)所用時(shí)間:210
第一次循環(huán)所用時(shí)間:337
opera\safari\firefox
基本上相差 100ms,但仍是最后一種慢
結(jié)論:證明我是正確的+new Date()寫法比new Date().getTime()效率低,原因進(jìn)行了類型轉(zhuǎn)化,通常我們常用的數(shù)量級(jí)(一萬(wàn)次以內(nèi))不是很大,所以在個(gè)瀏覽器幾乎不用考慮執(zhí)行效率的問題,所以第一種寫法用起來(lái)計(jì)較好,還節(jié)省了9個(gè)字符。當(dāng)用js游戲開發(fā)時(shí),當(dāng)用到大數(shù)量級(jí)的時(shí),建議原生寫法??梢蕴岣?0%效率。
相關(guān)文章
Javascript 世界時(shí)區(qū)時(shí)間顯示代碼
Javascript 世界時(shí)區(qū)時(shí)間顯示代碼,顯示多個(gè)地區(qū)的時(shí)間,需要的朋友可以參考下代碼2012-05-05javascript 格式化時(shí)間日期函數(shù)代碼腳本之家修正版
javascript中,new Date()得到的是一個(gè)國(guó)際化時(shí)間格式的時(shí)間值 這在我們使用中文的時(shí)候,很不方便,也很難看所以就需要對(duì)javascript中的日期時(shí)間進(jìn)行格式化.2009-12-12JS 操作日期 順便實(shí)現(xiàn) 上一周 和 下一周 功能
JS本身沒有提供日期加減操作能力,所以借此寫了幾個(gè)方法,用以操作日期,主要是實(shí)現(xiàn)日期的加減2009-10-10javascript 年月日聯(lián)動(dòng)實(shí)現(xiàn)核心代碼
年月日的四級(jí)聯(lián)動(dòng)實(shí)現(xiàn)效果的核心代碼,需要的朋友可以參考下。2009-12-12javascript 當(dāng)前日期加(天、周、月、年)
javascript當(dāng)前日期加(天、周、月、年) ,有需要操作日期的朋友,可以參考下。2009-08-08