Частота функции в Герцах

Beginner

This tutorial is from open-source community. Access the source code

Введение

В этом лабораторном занятии мы углубимся в измерение производительности JavaScript-функций с использованием концепции частоты в Герцах. Мы узнаем, как использовать метод performance.now() для вычисления времени, затраченного на выполнение функции, и как определить количество циклов в секунду. С помощью практических примеров и упражнений мы исследуем различия в производительности между различными реализациями одной и той же функции.

Вычисление частоты функции

Для измерения частоты выполнения функции в секунду (hz/hertz) используйте функцию hz. Вы можете сделать это, следуя шагам:

  1. Откройте Терминал/SSH и введите node, чтобы начать практиковаться в написании кода.
  2. Используйте performance.now() для получения разницы в миллисекундах до и после итерационного цикла, чтобы вычислить время, затраченное на выполнение функции iterations раз.
  3. Преобразуйте миллисекунды в секунды и разделите на время, затраченное, чтобы вернуть количество циклов в секунду.
  4. Если вы хотите использовать значение по умолчанию 100 итераций, опустите второй аргумент, iterations.
const hz = (fn, iterations = 100) => {
  const before = performance.now();
  for (let i = 0; i < iterations; i++) fn();
  return (1000 * iterations) / (performance.now() - before);
};

Вот пример использования функции hz для сравнения производительности двух функций, которые вычисляют сумму массива из 10 000 чисел:

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

В этом примере sumReduce работает быстрее, чем sumForLoop, потому что у нее частота выполнения функции ниже.

Резюме

Поздравляем! Вы завершили лабораторную работу по частоте функции в Герцах. Вы можете практиковаться в других лабораторных работах в LabEx, чтобы улучшить свои навыки.