Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как измерить время выполнения кода

Короткий ответ

performance.now() возвращает время в миллисекундах с дробной частью. Вычтите начало из конца:

const start = performance.now();
 
let sum = 0;
for (let i = 0; i < 1_000_000; i++) sum += i;
 
const ms = performance.now() - start;
console.log(typeof ms, ms >= 0);

Результат:

number true

Асинхронные операции

Для запроса или таймера второй замер делайте после await:

const start = performance.now();
await new Promise((resolve) => setTimeout(resolve, 200));
const ms = Math.round(performance.now() - start);
 
console.log(ms >= 195 ? 'about 200 ms' : ms);

Результат:

about 200 ms

console.time

В консоли браузера и в Node.js console.time() и console.timeEnd() сами выводят время:

console.time('sorting');
const numbers = Array.from({ length: 100000 }, () => Math.random()).sort();
console.timeEnd('sorting');

Результат:

sorting: 42.7 ms

Частая ошибка

Один замер ненадёжен: первый запуск часто медленнее. Повторите код много раз и сравнивайте средние значения.

const measure = (fn, times = 100) => {
  const start = performance.now();
  for (let i = 0; i < times; i++) fn();
  return (performance.now() - start) / times;
};
 
const average = measure(() => [3, 1, 2].sort());
console.log(average < 1 ? 'less than 1 ms per run' : 'slow');

Результат:

less than 1 ms per run

Функции из этого ответа

  • console.time — Измеряет, сколько времени выполнялся код.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.