1

これは単にルックアップチェーンを短縮するためですか?

  var slice = Array.prototype.slice;
  var splice = Array.prototype.splice;

http://backbonejs.org/docs/backbone.html

jQueryは似たようなことをします:

core_push = Array.prototype.push,
core_slice = Array.prototype.slice,

http://code.jquery.com/jquery-1.8.2.js

4

2 に答える 2

2

バックボーンの場合、それはまったく意味がありません。sliceとは両方ともsplice1回だけ使用されるため、var宣言によって不要なオーバーヘッドが発生します。

jQueryの場合、別の話。何度も参照される何かのローカル参照は、縮小を容易にします。そのため、製品版のコードサイズは小さくなります。

はい、それもパフォーマンスのわずかな向上ですが、話す価値はありません。

于 2012-10-12T21:52:04.370 に答える
0

スライス、スプライス、プッシュするための最もパフォーマンスの高い方法は、Cコードを使用することです。すべてのブラウザはArray.spliceを使用してCで記述されているため、JS処理ではなく内部でCを使用します。

本当にパフォーマンスが必要な場合は、どちらも使用しない方法を見つけるようにしてください。問題は、両方とも、ガベージコレクターが後で取得できるように配置されるゾンビオブジェクトを作成することです。GCの作業が少なければ少ないほど、長期的にはより多くの時間を節約できます。同じ配列を使用し、カーソルを使用して配列内の異なる位置で編集します。これにより、GCがそれを収集する必要がなくなります。

ここに例があります:trackFPS関数の40行目のhttps://github.com/puppybits/BackboneJS-PerfView/blob/master/PerfView.js 。多くのプッシュ/スライスを行っていて、パフォーマンスが必要な場合は、静的配列を検討してください。

于 2013-10-22T05:31:24.370 に答える