Как измерить время выполнения кода
Короткий ответ
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 msconsole.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 — Измеряет, сколько времени выполнялся код.