當我嘗試加速遞歸函數時,我發現了一些奇怪的東西。當我將用於記憶的對象傳遞給函數而不是全局變量時,代碼執行變得相當慢。爲什麼遞歸使用全局變量而不是本地變量時更快?
因此,不是這樣的:
var memoizationObj = {};
function factorial(n) {
// factorial code
};
var a = factorial(10);
我改變了代碼如下:
function factorial(n, memoizationObj) {
// factorial code
};
var b = factorial(10, {});
和代碼執行成爲> 50倍的速度較慢。
這究竟是爲什麼?以下是帶有完整代碼的jsperf。
請看看這篇文章,它是我最喜歡的一個編寫高效的JavaScript代碼:http://oreilly.com/server-administration/excerpts/even-faster-websites/writing- effective-javascript.html – 2013-04-04 19:13:42