Nach dem Lesen the recent smashing magazine Artikel zur Optimierung, habe ich einige Tests durchgeführt, um zu sehen, was die effektivste Möglichkeit wäre, ein Element aus der Mitte eines meiner Arrays zu löschen.Array Traversal Magnituden schneller nach dem Entfernen des ersten Elements
Nachdem ich meine eigenen Tests bezüglich des Spleißens eines Wertes aus der Mitte des Arrays vs. Löschen/setzen auf null durchgeführt hatte, stieß ich auf das eher unerwartete Ergebnis, dass das Verbinden des Wertes aus dem Array das Array zu einer Größe schneller zu überqueren.
Weitere Untersuchung führte mich zu this.
Aus irgendeinem Grund hat .shift() den ersten Datensatz aus dem Array 300-mal schneller zu durchlaufen (die größte Leistung in V8 gesehen, aber es scheint für alle Browser gültig zu sein, die ich ausprobiert habe es in).
Ich bezweifle, dass ich das missbrauche, da ich nicht glaube, dass die tatsächliche Traversierung ein Flaschenhals ist, aber weiß jemand, warum dieses Verhalten auftritt?
Edit: Falsche Verwendung von jsPerf war das zugrunde liegende Problem hier, siehe meine Antwort unten.
Ich glaube nicht, wenn das der Fall wäre, dann sollte dieser Testfall http://jsperf.com/spliced-vs-non-spliced/6 mit beiden von ungefähr der gleichen Geschwindigkeit kommen, mit dem gespleißt sehr sehr wenig schneller, was nicht der Fall zu sein scheint. – Doug