1

私は Web ブラウザーでの JavaScript パーサーの速度を調べています。重要なのは、簡単に実証できる必要があるということです。私は簡単なテストを思いつきました - 各スクリプト ブロックが個別に解析され、実行されるという考えは、スクリプトの大きなブロックが時間計測される可能性があるということです:

<script>var start = new Date().getTime();</script>

<script>
    /*! jQuery v1.8.2 jquery.com | jquery.org/license */
    ...
</script>

<script>alert ( new Date().getTime() - start );</script>

表面的にはこれは機能しているように見えますが、中間のスクリプト ブロックを削除すると、無視できるほどの時間になります。

ただし、私の論理に根本的な欠陥がないかどうかはわかりません。

4

4 に答える 4

1

答えはおおむねイエスのようですが、妥当な結果を得るには (他のものと同様)、テストを何度も実行して、コンパイル キャッシュとガベージ コレクションの影響を平準化する必要があります。上記のテストは、Parse-n-Load ライブラリに簡単に配置できます: http://carlos.bueno.org/2010/02/measuring-javascript-parse-and-load.html

ご協力いただきありがとうございます

于 2012-10-23T09:03:10.280 に答える
0

これは助けになるかもしれません!

var start = new Date().getTime();
var end = new Date().getTime();
var time = end - start;
alert('Execution time: ' + time);
于 2012-10-22T16:15:48.207 に答える
0

JavaScript のベンチマークを行いたい場合は、MilliSeconds などを含めます。

var t = new Date();
var start = t.getTime()*1000 + t.getMilliseconds();

/* do something*/

var t2 = new Date();
var end = t2.getTime()*1000 + t.getMilliseconds();

alert("The Code needed " + (end-start) + " milliseconds. That are " + parseInt((end-start)/1000) + " seconds.");
于 2012-10-22T16:17:56.617 に答える
0

解析時間と実行時間を区別したい場合があります。次のようなことができます

<script>start = Date.now();</script>
<script>
    parsed = Date.now();
    /*! jQuery v1.8.2 jquery.com | jquery.org/license */
    …
</script>
<script>var end = Date.now();
   alert ( "parsed in " + (parsed - start) + "ms" );
   alert ( "executed in " + (end - parsed) + "ms" );
   alert ( "overall time: " + (end - start) + "ms" );
</script>

これにより、キャッシュされた解析ツリーなどを検出できる場合があります。ただし、より明確な情報については、開発者ツールを見てください。プロファイラー セクションにそのようなタイプの情報が表示されます。または、Opera では、ネットワーク パネルのスクリプトのロード プロセスに含まれています。

于 2012-10-23T09:19:07.607 に答える