Introducción
En este laboratorio, profundizaremos en la medición del rendimiento de las funciones de JavaScript utilizando el concepto de frecuencia en Hertz. Aprenderemos cómo utilizar el método performance.now() para calcular el tiempo transcurrido al ejecutar una función y cómo determinar el número de ciclos por segundo. A través de ejemplos prácticos y ejercicios, exploraremos las diferencias de rendimiento entre diferentes implementaciones de la misma función.
Cálculo de la frecuencia de una función
Para medir la frecuencia de ejecución de una función por segundo (hz/hertz), utiliza la función hz. Puedes hacerlo siguiendo estos pasos:
- Abre la Terminal/SSH y escribe
nodepara comenzar a practicar la codificación. - Utiliza
performance.now()para obtener la diferencia en milisegundos antes y después del bucle de iteración para calcular el tiempo transcurrido al ejecutar la funcióniteracionesveces. - Convierte los milisegundos a segundos y divídelo por el tiempo transcurrido para devolver el número de ciclos por segundo.
- Si quieres utilizar el valor predeterminado de 100 iteraciones, omite el segundo argumento,
iteraciones.
const hz = (fn, iterations = 100) => {
const before = performance.now();
for (let i = 0; i < iterations; i++) fn();
return (1000 * iterations) / (performance.now() - before);
};
A continuación, se muestra un ejemplo de uso de la función hz para comparar el rendimiento de dos funciones que calculan la suma de una matriz de 10.000 números:
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
En este ejemplo, sumReduce es más rápido que sumForLoop porque tiene una frecuencia de ejecución de función más baja.
Resumen
¡Felicidades! Has completado el laboratorio de Frecuencia Hertz de Funciones. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.