0

私はただ興味があります。2013 年に JavaScript エンジンが最適化できるものとできないものを誰かが知っているのではないでしょうか? 近い将来の仮定はありますか?良い記事を探していましたが、インターネットにはまだ「バイブル」がありません。

では、1 つの質問に焦点を当てましょう。

10msごとに、またはタイトループで呼び出される関数があるとします:

function bottleneck () {

    var str = 'Some string',
        arr = [1,2,3,4],
        job = function () {
            // do something;
        };

    // Do something; 
    // console.log(Date.getTime());
}

ご覧のとおり、変数の初期値を毎回計算する必要はありません。しかし、それらを上位のスコープに移動すると、変数のルックアップが失われます。Javasriptエンジンにそのような明白なことをするように指示する方法はありますか?変数の初期値を事前に計算しますか?

質問をクリアするためにjsperfを気にしました。色々なタイプで実験中です。特に関数とプリミティブに興味があります。

4

2 に答える 2

1

10 ミリ秒ごとに関数を呼び出す必要があり、それがボトルネックになっている場合、最初に考えるべきことは、「この関数を 10 ミリ秒ごとに呼び出すべきではない」ということです。あなたが行ったアーキテクトで何かが間違っていました。つまり、 http://jsperf.com/variables-caching/2の1b を参照してください。これは、「キャッシュされた」バージョンよりも約 4 倍高速です。主な理由は、コード内のすべての変数について、スコープアップ、または再宣言。1b では、一度スコープを上げて「イニシャル」を取得し、ローカル参照からコンテンツのローカル エイリアスを設定します。多くの時間が節約されます。

于 2013-07-24T14:28:26.417 に答える