Вебсправочник
Основы веб-разработки

performance.now(): измерение длительности без календарных часов

Performance.now возвращает относительную монотонную временную отметку. Она подходит для измерения длительности операции и не является датой, которую можно показать как время публикации.

Назначение

Performance.now возвращает относительную монотонную временную отметку. Она подходит для измерения длительности операции и не является датой, которую можно показать как время публикации.

Как это работает

Снимите значение до и после интересующего участка. Разница выражается в миллисекундах, а точность может ограничиваться браузером. Учебный пример считает небольшую сумму и выводит результат вместе с длительностью.

Пример

const values = Array.from({length:1000}, (_, index) => index);
const start = performance.now();
const sum = values.reduce((total, value) => total + value, 0);
const elapsed = performance.now() - start;
console.log({sum, milliseconds:elapsed});

Что должно получиться

Сумма равна 499500, а длительность зависит от среды и может быть очень маленькой. Это наблюдение одного запуска, а не доказательство производительности метода во всех условиях.

Граница применения и частая ошибка

Один короткий прогон сильно зависит от прогрева, нагрузки, оптимизаций и разрешения таймера. Не сравнивайте значения разных контекстов как общую календарную шкалу без учёта timeOrigin. Date.now решает задачу времени эпохи, а не гарантированно монотонного интервала.

Самостоятельная проверка

Повторите опыт несколько раз и запишите разброс. Для исследования реального торможения используйте запись Performance, а не только число в консоли. Не увеличивайте цикл до зависания рабочей вкладки ради заметной длительности.

Самостоятельный учебный материал. Техническая документация: первоисточник по теме ↗. Если результат отличается, проверьте код и версию браузера.