Re: javascript benchmark (效能測試 on js function creation)

看板Ajax作者 (弱水三千 只取一瓢飲)時間14年前 (2012/03/12 02:20), 編輯推噓0(003)
留言3則, 1人參與, 最新討論串3/3 (看更多)
※ 引述《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)

03/12 10:21, , 1F
如果會有這種情形那是 optimize 引擎作掉了 XD
03/12 10:21, 1F

03/12 10:22, , 2F
不過實際上在跑就是要考慮 optimze 引擎啊 :P
03/12 10:22, 2F

03/12 10:22, , 3F
這是 test case issue 不是 test issue
03/12 10:22, 3F
文章代碼(AID): #1FNEq3ky (Ajax)
文章代碼(AID): #1FNEq3ky (Ajax)