2016-11-18 64 views
2

我目前正在寫一篇論文。在本文中,我將討論代碼的優化。在我的例子中,我將用JavaScript來區分兩個數組。比較ES5過濾器和嵌套for循環。用於基準JavaScript代碼的學術正確方法?

我的測試使用jsPerf.com符合預期。 ES5濾波器比嵌套for循環慢89-90%。使用performance.now()可以找到類似的結果(啓動計時器,運行代碼,停止計時器並計算所需時間)。

所有這些都非常適合基準測試代碼。真的,他們是。但是,他們在學術上不正確。第一次測試完成後,如果我運行100%CPU密集型基準測試,會發生什麼?那麼測試2的結果是「無效的」。

什麼是測試兩段JavaScript代碼的最佳方法,正確的方法?

+0

https://mathiasbynens.be/notes/javascript-benchmarking – robertklep

+0

@robertklep然而,如果我說「我跑了這個代碼一百萬次,花了平均時間」,我就讀了這個和所有的問題,我是會因此受到打擊。這不是正確的做法。如果我在100%CPU使用率下運行基準測試,結果將會不同。 – MortenMoulder

+0

@MortenMoulder結果也會因不同的瀏覽器而有所不同。使用不同版本的瀏覽器。這意味着你所做的結果可能會在幾個月後完全不同。你對有效性的要求是什麼? – vlaz

回答

0

我找到了答案。使用Google Chrome的Profiler我能夠獲得我的功能的CPU時間。

使用Profiler似乎是最好的方法,因爲它實際上使用CPU時間而不是實際時間。即使我的CPU在其中一個測試中以100%運行,結果也不應受到影響。