2011/04/28

JavaScript高速化 関数呼び出し地獄編

Web+DB Press Vol.58の「JavaScriptの玉手箱」でJavaScriptの高速化に関する記事があった。
※「JavaScript高速化 undefined型判定編」ってのも書きました

■関数
・関数呼び出しのコスト
JavaScriptは関数呼び出しのコストが高い
関数を小分けにし過ぎると呼び出す回数が増えて遅くなるので、ある程度はインラインで書いて、関数呼び出しの回数を減らした方が速くなる

・関数の呼び出し
同じスコープ内にある関数かグローバルな関数は速い
でもグローバルな関数をwindow["hahihuheho"]という書き方で呼ぶとえらく遅くなるらしい。

呼び出し早い順ランキング
1.グローバル関数をwindowを省略して呼ぶ
2.上位スコープの関数を呼び出す
3.ローカル関数を呼び出す
4.グローバル関数をwindow["****"]で呼ぶ

自分的に意外だったのはローカル関数呼ぶより上位の関数呼んだほうが速いってこと。
各ブラウザでのテスト結果も出てたんだけどChrome以外は大きな差があった。

※ローカル関数呼び出し
function func1(){
    fucntion localFunc(){
         return true;
    }

    localFunc();
}
↑よりも↓の方が速い

※上位スコープの関数呼び出し
function func1(){
     scopeFunc();
}
※↓上位スコープにある関数
function scopeFunc(){
    return true;
}

兄弟に相談するよりも、親に聞いた方がいいってイメージで覚えとこう

他にも型判別の高速化に関しても書いてあったので、また今度。



0 件のコメント:

コメントを投稿