chrome でその関数を呼び出すと、空の関数を呼び出すのにかかる時間の 3 倍もかからないfunction f(){}
ので、書き直してもあまりメリットがないと思います。
問題は関数のオーバーヘッドであり、数式ではありません。インライン化することで、もっと興味深いものを保存できる可能性があります...
編集
テストを行うには、Chrome でコンソールを開き (ctrl-shift-C)、タイミング関数を作成するだけでした。
timeit = function(f) {
var start=(new Date).getTime();
for (var i=0; i<100000; i++)
f(1);
return (new Date).getTime() - start;
}
function(){}
次に、関数を使用してテストしました。
ただし、この種のテストは非常に信頼性が低いことが判明しています。timeit(f1)
200 を報告し、120 を報告してもばかげた結果が得られましたがtimeit(f2)
(かなりの違いです)、実際f1
にf2
は同じ関数オブジェクトにリンクされた 2 つの変数でした。また、正確にその機能であった場合でも、timeit(f)
との間に違いがありました。timeit(function(x){ return Math.cos(x); })
f
V8 と JavaScript コンソールがどのように相互作用するかについての説明があるかもしれませんが、それが何であるかはわかりません。
また、FF4では、このアプローチは非常に信頼できない結果をもたらします...