0

ステートメントによって実行された時間をキャプチャする最良の方法を見つけようとしています。たとえば、if(txt =='abc') などの js stmt にかかった時間はどれくらいですか。console.time('test')/console.endTime('test') ペアを使用して計算するか、単純な js コード (以下に示す) を使用して時間を計算すると、コードが実行されるたびにコンソール出力が変化します。

また、コンソールで見られる違いは、ミリ秒単位で 1 桁、2 桁から 3 桁、つまり 1 ミリ秒、60 ミリ秒、800 ミリ秒の場合もあり、順序が一貫していません。一度だけ実行してブラウザを閉じてもう一度実行して、他のGCと変数が表示されないようにして時間を妨げないようにしましたが、結果は同じです。数ミリ秒は理解できませんが、そのような大きな違いは、明確な時間を得るために多くのものです。したがって、インタープリターによって実行される時間を取得するための最良かつ一貫した方法とは正確には何ですか。特定の方法で記述した場合にどの stmt のパフォーマンスが向上するか、または使用するのに最適かを証明するための最適な尺度を見つけるにはどうすればよいでしょうか

var start = (new Date).getMilliseconds();
if(txt =='abc'){};
var diff = (new Date).getMilliseconds() - start;
console.log(diff);

試験は全てFFで実施。また、getMilliseconds、getTime、console.endTime などの異なるアプローチが次々と取られます *

4

2 に答える 2

1

ええと..現在のタイムスタンプを取得するために、2 つの非常に異なる関数を使用しています。

Date.prototype.getMilliseconds()

よりも別の (短い) 数値を返します

Date.prototype.getTime()

したがって、これは一般的には良い考えではなく、問題の原因である可能性が最も高いです。コード内で測定したい場合は、常に.getTime()orを使用する必要がありますDate.now()。どちらも完全なタイムスタンプ番号を返します。

于 2012-08-24T15:13:25.470 に答える
0

ここでのポイントは、この命令を実行する時間はほとんどの場合 0 ミリ秒よりもはるかに短いということです。そのため、なぜこれらの差が生じるのかわかりません。私のマシンで実行した場合:

for (x = 0; x < 100; x++) {                       
    var start = (new Date).getMilliseconds();
    if(txt =='abc'){};
    var diff = (new Date).getMilliseconds() - start;
    print(diff);
}

私は得る:

0
0
0
0
...
于 2012-08-24T15:31:46.443 に答える