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, а не только число в консоли. Не увеличивайте цикл до зависания рабочей вкладки ради заметной длительности.