7

2 つの ID セレクターの違いをテストしました$('#lol')$((((('#lol')))))

firefox と chrome を使用して、jsperf でテストを開始しました。結果は興味深いものです: Firefox では、最初の (通常のセレクター) は 40% 遅くなります (!!!)。クロムの場合、2 番目は 0.84% 遅くなります。

なぜこのような違いがあるのですか?誰かがこれを説明できますか?

jsperf.com は信頼できますか?

ここでテストを見ることができます:

http://jsperf.com/ghshshsrd

楽しみのために、他のブラウザでテストします。

(編集:ちなみに、私はMac OS Xを使用しています)

4

2 に答える 2

2

他の人が指摘したように、2 つのステートメントで得られた結果の違いはごくわずかです。同じステートメントを 2 回テストしても、同じ Ops/sec 値が 2 つ得られる可能性はほとんどありません。

また、「複数のテスト」ではなく「テスト」と言ったことにも気づきました。結果がおかしいと思われる場合は、テストを繰り返してください。テスト実行の途中でブラウザのリソースが不足していると、異常な結果が発生する可能性があることを忘れないでください。

JSPerf は私にとって常に信頼できるものでした。最適化手法のデモンストレーションには十分です (これは典型的な例です)。

于 2013-06-05T23:51:51.717 に答える
0

実際には、要素を選択する両方の方法に実際の違いはありません (読みやすさを除く)。ケースをより客観的に測定する新しい jsperf テスト ケースを作成しました。

-> http://jsperf.com/jquery-selector-performance-20130730

なぜあなたのテスト結果はとても奇妙ですか? 両方のテストの実際のパフォーマンスの違いよりも、テスト シナリオが不正確である可能性が高い

最初のテストのテスト順序を逆にすることができます。最初にコード$(((('#lol'))))をチェックし、この後に$('#lol'). 現在のテストとは正反対の結果が得られると確信しています;-)

私はこれについての専門家ではありませんが、現在のブラウザーは非常にスマートで、javascript コード/変数をキャッシュします。また、jQuery は、最初の呼び出しの後に値を保存する可能性があります。

于 2013-07-30T20:51:30.933 に答える