Einführung
In diesem Lab werden wir uns mit der Messung der Leistung von JavaScript-Funktionen unter Verwendung des Begriffes der Hertz-Frequenz befassen. Wir werden lernen, wie die performance.now()-Methode verwendet wird, um die vergangene Zeit bei der Ausführung einer Funktion zu berechnen und wie die Anzahl der Zyklen pro Sekunde bestimmt wird. Anhand von praktischen Beispielen und Übungen werden wir die Leistungunterschiede zwischen verschiedenen Implementierungen derselben Funktion untersuchen.
Funktionsfrequenzberechnung
Um die Frequenz der Ausführung einer Funktion pro Sekunde (hz/hertz) zu messen, verwenden Sie die hz-Funktion. Sie können dies tun, indem Sie die folgenden Schritte ausführen:
- Öffnen Sie das Terminal/SSH und geben Sie
nodeein, um mit der Codeausführung zu beginnen. - Verwenden Sie
performance.now(), um die Differenz in Millisekunden vor und nach der Iterationsschleife zu erhalten, um die vergangene Zeit bei der Ausführung der Funktioniterations-mal zu berechnen. - Konvertieren Sie Millisekunden in Sekunden und dividieren Sie sie durch die vergangene Zeit, um die Anzahl der Zyklen pro Sekunde zurückzugeben.
- Wenn Sie die Standardeinstellung von 100 Iterationen verwenden möchten, lassen Sie den zweiten Argument
iterationsweg.
const hz = (fn, iterations = 100) => {
const before = performance.now();
for (let i = 0; i < iterations; i++) fn();
return (1000 * iterations) / (performance.now() - before);
};
Hier ist ein Beispiel für die Verwendung der hz-Funktion, um die Leistung von zwei Funktionen zu vergleichen, die die Summe eines Arrays von 10.000 Zahlen berechnen:
const numbers = Array(10000)
.fill()
.map((_, i) => i);
const sumReduce = () => numbers.reduce((acc, n) => acc + n, 0);
const sumForLoop = () => {
let sum = 0;
for (let i = 0; i < numbers.length; i++) sum += numbers[i];
return sum;
};
Math.round(hz(sumReduce)); // 572
Math.round(hz(sumForLoop)); // 4784
In diesem Beispiel ist sumReduce schneller als sumForLoop, weil es eine niedrigere Frequenz der Funktionsausführung hat.
Zusammenfassung
Herzlichen Glückwunsch! Sie haben das Lab zu der Hertz-Frequenz von Funktionen abgeschlossen. Sie können in LabEx weitere Labs absolvieren, um Ihre Fähigkeiten zu verbessern.