Heim >Web-Frontend >js-Tutorial >Welchen Einfluss hat das Schreiben von For-Schleifen in JavaScript auf die Ausführungseffizienz?
Der Einfluss des Schreibens einer For-Schleife auf die Effizienz
Im Allgemeinen gibt es zwei Möglichkeiten, eine For-Schleife zu schreiben:
Kein Schreiben von How So deklarieren Sie Variablen: for(var i = 0;i<arr.length;i++){}
So deklarieren Sie Variablen: for(var i = 0,len = arr.length;i < len;i++){}
Zusätzlich zu for-Schleifen gibt es Außerdem forEach()
gibt es auch Artikel, die besagen, dass forEach()
am effizientesten ist, und es wird empfohlen, die forEach()
-Schreibmethode zu verwenden. Welche ist also effizienter? Lass uns einen Test machen und sehen.
Testplan
Der Gesamttestplan sieht wie folgt aus:
Erstellen Sie eine Testarray-Variable, die 40 Millionen enthält.
Verwenden Sie zwei Schreibmethoden: for-Schleife und foreach, um diese Testvariable zu durchlaufen.
Führen Sie auf derselben stabilen Maschine 10 Tests durch und ermitteln Sie schließlich den Durchschnitt.
Testumgebung: CPU: Inter(R) Core i5-3210M, RAM: 12GM, System: win10 (x64)
Testprozess
Erstellen einer Testvariablen
Verwenden Sie zunächst eine While-Schleife, um eine Testvariable zu erstellen. Die Details sind wie folgt:
var testArrs = [], i = 0; while(i<40000000){ testArrs.push(i); i++; }
Schreiben Sie die entsprechende Testfunktion
, um den von mir verwendeten Timecode zu messen und auszuführen > und console.time()
zum Testen. console.timeEnd()
function testForeach(testArrs){ console.time('foreach'); var newArrs = []; testArrs.forEach(function(i){ newArrs.push(i); }); console.timeEnd('foreach'); }For-Schleife ohne Variablendeklaration:
function testNoDeclare(testArrs){ console.time('no declare'); var newArrs = []; for(var i = 0;i<testArrs.length;i++){ newArrs.push(i); } console.timeEnd('no declare'); }Schreiben mit Variablendeklaration
function testUseDeclare(testArrs){ console.time('use declare'); var newArrs = []; for(var i = 0,len = testArrs.length;i<len;i++){ newArrs.push(i); } console.timeEnd('use declare'); }
Führen Sie die Testfunktion aus
Das Ausführen der Testfunktion ist sehr einfach, rufen Sie einfach die Funktion auftestForeach(testArrs); testNoDeclare(testArrs); testUseDeclare(testArrs);
Testergebnisse
Nach 10 Tests wurden die folgenden Ergebnisse erhaltenforeach | 不写声明 | 写声明 |
---|---|---|
2372.891ms | 672.530ms | 743.974ms |
2431.821ms | 710.275ms | 805.676ms |
2422.448ms | 729.287ms | 741.014ms |
2330.894ms | 730.200ms | 755.390ms |
2423.186ms | 703.255ms | 769.674ms |
2379.167ms | 689.811ms | 741.040ms |
2372.944ms | 712.103ms | 710.524ms |
2316.005ms | 726.518ms | 726.522ms |
2535.289ms | 733.826ms | 747.427ms |
2560.925ms | 793.680ms | 817.098ms |
平均值 | 平均值 | 平均值 |
2414.56ms | 720.15ms | 755.83ms |
dieses len = arr.length
möglicherweise zwischengespeichert wurde, macht es für uns keinen Sinn, eine len-Variable zum Speichern zu deklarieren. arr.length
Besondere Schreibweise für die for-Schleife
Die grundlegende Syntax der for-Schleife lautet:for (语句 1; 语句 2; 语句 3) { 被执行的代码块 }
for(var i=0;i<10;i++){ console.log(i); }Aber! Gemäß der obigen grammatikalischen Anleitung können wir es auch so schreiben
for(var i=10;i--;){ console.log(i); }Als ich es zum ersten Mal las, war ich verwirrt, wie konnte man es so schreiben? Aussage 2 enthält die Schleifenbedingung und i- ist die Beurteilungsbedingung. Wenn in Anweisung 2 „true“ zurückgegeben wird, wird die Schleife tatsächlich weiter ausgeführt. Wenn in js 0,null,undefiniert,false,'','' als bedingte Beurteilung verwendet wird, ist das Ergebnis falsch, was bedeutet, dass es falsch ist, wenn i- 0 erreicht, und die Schleife endet. Gehen Sie zurück zum Code am Anfang des Artikels
for (var i = 0, rule; rule = rules[i++];) { //do something }Diese Regel = Regeln[i++] ist die Beurteilungsbedingung undefiniert, wird die Schleife beendet. Wenn dieser Code also auf normale Weise geschrieben wäre, würde er so aussehen:
for(var i = 0;i < rules.length;i++){ var rule = rules[i] }Tatsächlich fügt er lediglich Beurteilung und Zuweisung zusammen und weist Werte zu beim Schleifen. Ist es nicht ganz einfach?
Das obige ist der detaillierte Inhalt vonWelchen Einfluss hat das Schreiben von For-Schleifen in JavaScript auf die Ausführungseffizienz?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!