私はjsperf test caseを持っており、結果はかなり混乱しています。それらはすべて同じ速度について出てくる、どうすれば私のjavascriptテストケースを「最適化する」ことを避けることができますか?
- 乗算
- 制御は(どちらも操作が行われている)
- 部門
と、ほとんどの時間..:私は3、「スニペット」を持っていますコントロールさえ!私はJS JITコンパイラがremoving my "unnecessary" instructionsだったと思っていましたが、何の効果もなかったようです。テストループが完了したとき、私はaccumulating the results, and logging them to the consoleを始めました。
for (var i = 0; i < nNumbers; i++) {
result += a[i]/b[i];
}
console.log(result);
しかし、そうでないときからコンソールを開いたときに私は大きく違った結果を得ました。コンソールロギングからの減速は、他のパフォーマンス上の問題を圧倒していました。
私はテストしようとしている操作に比べてロギングの量を最小限に抑えるために、各「スニペット」内で反復回数を調整してみました。しかし、私はまだ3つのスニペットの間に大きな速度差はありません。実際には、除算と乗算の両方が、定数を評価するのとほぼ同じ速度ですか?私は間違ったことをする必要があります。またはjsperfが壊れています。
既に回答済みの質問はありますが、Javascriptベンチマークに特有のものはありません。
- How can I prevent the Rust benchmark library from optimizing away my code?
- How can I be sure that the compiler doesn't optimize away my performance test?
コンピュータでは分裂が遅いので、予想通り、ops a:mult:126k、div:33k、control:282kを得ました。 http://jsperf.com/multiplication-vs-division-lars/2 – dandavis
@dandavis私は同様の結果を得る – BeyelerStudios
と言っていたが、チャートは正常に機能していないようだが、数値自体は問題ありませんでした。 – dandavis