7

簡単な質問のみです。私はベンチマークを作成しました(以下のリンク)。少なくとも私にとっては(chrome 18.0.1025を実行しています)、毎回array.shift()を使用して配列の前から値を読み取る方が、while/forを使用して値を読み取るよりも著しく高速に見えますループし、インデックスでアクセスします。

shift() にはもっと多くの作業があるため、これは正しくないと確信していますが、同時に、このかなり極端な違いを説明するために何が間違っていたのかわかりませんか?

http://jsperf.com/some-array-reading-comparisons

読んでくれてありがとう、ジェームズ

4

1 に答える 1

7

アレイをテストごとに 1 回だけセットアップしているため、shiftテストの最初の繰り返しでのみ、操作するデータが含まれます。次の反復では、最初の反復から空の配列が残っており、すぐに終了します。

これは、変更アルゴリズムがデータのコピーに対して機能する固定テスト スイートです。アルゴリズムは、shift予想どおり、パフォーマンスが最後になります。

于 2012-09-14T12:19:07.090 に答える