Heim  >  Artikel  >  Web-Frontend  >  JS-Leistungsanalyse beim Hinzufügen von Elementen zu array_javascript-Fähigkeiten

JS-Leistungsanalyse beim Hinzufügen von Elementen zu array_javascript-Fähigkeiten

WBOY
WBOYOriginal
2016-05-16 16:13:02926Durchsuche

Verglichen wurde die Leistung zwischen vier Möglichkeiten, Elemente zu einem Array hinzuzufügen:

Verwenden Sie den Indexer, um

hinzuzufügen

Code kopieren Der Code lautet wie folgt:

console.time("index");
var a = [];
für (var i = 0, l = times; i < l; i ) {
a[i] = i;
}
console.timeEnd("index");

Push-Methode verwenden

Code kopieren Der Code lautet wie folgt:

console.time("push");
var a = [];
für (var i = 0, l = times; i < l; i ) {
a.push(i);
}
console.timeEnd("push");

Concat-Methode verwenden

Code kopieren Der Code lautet wie folgt:

console.time("concat");
var a = [];
für (var i = 0, l = times; i < l; i ) {
a.concat(i);
}
console.timeEnd("concat");

Verwenden Sie die Concat-Methode, der Parameter ist ein Array

Code kopieren Der Code lautet wie folgt:

console.time("concat with array");
var a = [];
für (var i = 0, l = times; i < l; i ) {
a.concat([i]);
}
console.timeEnd("concat with array");

Zeiten auf 10.000 (zehntausend) Mal einstellen:

Code kopieren Der Code lautet wie folgt:

Index: 0,310 ms
Push: 1,476 ms
Konkat: 8,911 ms
Konkat mit Array: 2,261 ms

Stellen Sie die Zeiten auf 100000 (einhunderttausend) Mal ein:

Code kopieren Der Code lautet wie folgt:

Index: 1,967 ms
Push: 11.980 ms
Konkat: 70,410 ms
Konkat mit Array: 28,292 ms

Zeiten auf 1000000 (Millionen) Mal einstellen:

Code kopieren Der Code lautet wie folgt:

Index: 138,559 ms
Push: 93,074 ms
Konkat: 608,768 ms
concat mit Array: 243,371 ms

Zeiten auf 10000000 (zehn Millionen) Mal einstellen:

Code kopieren Der Code lautet wie folgt:

Index: 1473,733 ms
Push: 611,636 ms
Konkat: 6058,528 ms
concat mit Array: 2431.689ms

Zusammenfassung

Diese Schlussfolgerung gilt nur für den Chrome-Browser

Die Ausführungseffizienz der Concat-Methode ist am langsamsten
Im Vergleich zur Parameterübergabe der beiden Concat-Methoden ist die Ausführungseffizienz höher, wenn die Parameter als Arrays akzeptiert werden, als wenn die Parameter als Nicht-Arrays akzeptiert werden
In den meisten Fällen ist die Ausführungseffizienz des Indexers höher als die der Push-Methode
Wenn die Anzahl der Ausführungen zunimmt, wird die Ausführungseffizienz des Indexers schlechter als die der Push-Methode

Browservergleich

Vielen Dank an den Internetnutzer für den Hinweis, dass mir die Erfahrung fehlt, deshalb werde ich hier einen horizontalen Vergleich zwischen Browsern hinzufügen

Die erste besteht darin, die Concat-Methode zu verwenden. Wenn der Parameter in IE und Firefox ein Array ist, ist die Ausführungseffizienz langsamer als wenn der Parameter kein Array ist, aber der Unterschied ist nicht groß
Dann sind die Index- und Push-Methoden definitiv schneller als Concat. Die Verwendung der Index-Methode im IE ist immer schneller als Push. In Firefox ist Push etwas besser, aber der Unterschied ist nicht groß Vergleicht man die Ausführungseffizienz der Index- und Push-Methoden zwischen den drei Browsern, ist die Ausführungseffizienz von Firefox viel höher als die von IE und Chrome. Im Grunde ist sie zehnmal schneller. Im Vergleich zu anderen Browsern ist die Ausführungseffizienz von Firefox im Grunde zehnmal schneller. Der langsamste der beiden

Das Folgende sind die millionenfachen Ergebnisse:

Code kopieren Der Code lautet wie folgt:

// Firefox
Index: Timer gestartet
Index: 229,79 ms
Push: Timer gestartet
Push: 205,12 ms
concat: Timer gestartet
Konkat: 2136,99 ms
concat mit Array: Timer gestartet
Konkat mit Array: 2365,18 ms

Code kopieren Der Code lautet wie folgt:

//dh
Index: 2.533,744 Millisekunden
Push: 3.865,979 Millisekunden
Konkat: 4.303,139 Millisekunden
concat mit Array: 4.792,208 Millisekunden

Dieser Artikel befasst sich nur mit der Leistung von JS und vertieft das Verständnis Ihrer Freunde für Javascript durch Vergleiche.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn