ここでのすべてのランタイム パフォーマンス テストで見逃していることの 1 つは、もう 1 つの重要な考慮事項です。
ネットワーク帯域幅。
ローカル変数にキャッシュ$(this)
すると、一般的にスクリプトのサイズが縮小されます。特に縮小すると ( this
4 文字から縮小できないため)。
検討:
function hello(text) {
$(this).attr();
$(this).css();
$(this).data();
$(this).click();
$(this).mouseover();
$(this).mouseleave();
$(this).html(text);
}
hello('Hello world');
Closure コンパイラの縮小出力は
function hello(a){$(this).attr();$(this).css();$(this).data();$(this).click();$(this).mouseover();$(this).mouseleave();$(this).html(a)}hello("Hello world");
これにより、39 バイト (20%) 節約できます。今考えてみましょう:
function hello(name) {
var $this = $(this);
$this.attr();
$this.css();
$this.data();
$this.click();
$this.mouseover();
$this.mouseleave();
$this.html(name);
}
hello('Hello world');
縮小された出力は
function hello(b){var a=$(this);a.attr();a.css();a.data();a.click();a.mouseover();a.mouseleave();a.html(b)}hello("Hello world");
これにより、74 バイト (37%) 節約され、バイトの節約はほぼ 2 倍になります。明らかに、大規模なスクリプトでの実際の節約はこれより少なくなりますが、それでもキャッシュによってスクリプトのサイズを大幅に削減することができます。
本当に、キャッシングには利点しかありません$(this)
。ごくわずかですが、測定可能なランタイム パフォーマンスの向上が得られます。さらに重要なことは、ネットワーク上を移動するバイト数を減らすことができ、ページの読み込みが速いほど売り上げが増えるため、直接的により多くのドルに変換できます。
そのように考えると、実際には、繰り返してキャッシュしないことには定量化可能なコストがかかると言えます。$(this)