作者tomin (弱水三千 只取一瓢飲)
看板Ajax
標題Re: javascript benchmark (效能測試 on js function creation)
時間Mon Mar 12 02:20:49 2012
※ 引述《TonyQ (自立而後立人。)》之銘言:
: 你測試的部份怎麼不寫成底下這樣就好?XD
: function stopWatch(fn){
: var start = new Date();
: try{
: fn();
: }finally{
: var end = new Date();
: return end - start;
: }
: }
: stopWatch(function(){
: function f(){alert()}
: for(i=0;i<1000000;i++){
: x = f;
: }
: });
以這個case來說 這樣寫測不到真正花費的時間
如果不傳fn()進去 而是直接把fn()換成真的要測的部分 也就是變成
function stopWatch(){
var start = new Date();
try{
function f(){alert()}
for(i=0;i<1000000;i++){
x = f;
}
}finally{
var end = new Date();
return end - start;
}
}
需要的時間馬上增加 150 倍 也比另一種寫法多2.5倍
http://jsfiddle.net/xKvu2/
奇怪吧?三種很類似的寫法 但得到不同的數據
以Fx10測 時間差不多是3, 180, 470 ms
讓我不禁疑惑怎麼測才對?
更讓人無所適從的是 不同的瀏覽器測出來的數據差很多
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.24.41.89
※ 編輯: tomin 來自: 114.24.41.89 (03/12 02:31)
→ TonyQ:如果會有這種情形那是 optimize 引擎作掉了 XD 03/12 10:21
→ TonyQ:不過實際上在跑就是要考慮 optimze 引擎啊 :P 03/12 10:22
→ TonyQ:這是 test case issue 不是 test issue 03/12 10:22