我想知道哪種情況有更多的「開銷」:JavaScript應該儘可能共享函數或創建新函數?
1)情況1:500萬個對象共享30個函數。每次調用函數時,有一個開銷,因爲它需要做f.call(例如,ARG1,ARG2等)
//example code
function makeObject()
{
return { method1:func1,
method2:func2,
...
method30:func30 };
}
2)案例2:5萬個對象,每組30個功能( = 1.5億個人功能實例)。每次被調用的函數,有沒有「路由開銷」但當然,在具有犧牲多個實例
//example code
function makeObject()
{
return { method1:func1.bind(asd),
method2:func2.bind(asd),
...
method30:func30.bind(asd) };
}
500萬隻是一個數字我的手指打出來,而我的大腦還是搞清楚一個很好的數舉一個例子。
基本上我想知道一般我們應該儘可能共享函數還是創建新函數?
(你可以認爲我永遠不會使用eval函數的任何地方,在整個頁)
我假設5m對象是動態創建的? – Kayla 2011-05-27 07:06:33
運行測試。這是知道或確定的唯一途徑。 (爲什麼不只是使用「原型鏈」,讓引擎「分享」這些功能?) – 2011-05-27 07:06:34
500萬將是不現實的,也許僅用於基準測試 – Ibu 2011-05-27 07:10:05