Warum ist v1 so viel langsamer als v2?Leistungsprobleme beim Speichern von Objektreferenzen auf Array
v1 -
var foo = function (a,b,c) {
this.a=a; this.b=b; this.c=c;
}
var pcs = new Array(32);
for (var n=32; n--;) {
ref = new foo(1,2,3)
pcs[n] = ref; //*****
}
v2 -
var foo = function (a,b,c) {
this.a=a; this.b=b; this.c=c;
}
var pcs = new Array(32);
for (var n=32; n--;) {
ref = new foo(1,2,3)
pcs[n] = 1; //*****
}
Ich dachte, da ich einen Verweis auf das neue Objekt in 'ref' halten, dass einfach, dass die Bezugnahme auf eine Zuordnung Das Element im Array würde ungefähr so schnell sein wie die Zuweisung eines Literalwerts, aber es stellt sich heraus, dass die Zuweisung der Referenz wesentlich langsamer ist. Kann jemand etwas Licht dazu bringen? Alles, was ich tun kann, um die Leistung hier auf V1 zu verbessern?
Fiddle:
http://jsfiddle.net/a0kw9rL1/1/
wo Schleife beenden Zustand? – ozil
@ozil: Wo immer es ist, der zweite Teil des 'for'" Headers ",' n - '. Wenn es "0" zurückgibt, wird die Schleife beendet. –
@ Felix Kling, was es nicht nach '0' dekrementiert – ozil