Вы слышали о performance.now()?

Это метод Performance API, который возвращает DOMHighResTimeStamp (что означает «Временная метка высокого разрешения»), что простыми словами представляет собой значение времени в миллисекундах в дробной части между двумя моментами времени.

Наиболее распространенный вариант использования performance.now() — это отслеживание времени выполнения фрагмента кода. Варианты использования в реальной жизни могут включать сравнительный анализ и мониторинг производительности видео, аудио, игр и других медиа.

Итак, как это работает? Допустим, мы хотим отслеживать, сколько времени требуется для запуска определенной функции.

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

const startTime = performance.now();
for (let i = 0; i < 100; i++) {
  console.log("Hi!");
}
const finishTime = performance.now();
console.log(`It took me ${finishTime - startTime} milliseconds to say "hi" a 1000 times!`
);

Возможно, вы видели, что Date.now() также используется для этой цели. Это правильный и распространенный подход к мониторингу производительности, но есть одно предостережение.

Самая большая разница между performance.now() и Date.now() заключается в том, что Date.now() возвращает метку времени по отношению к времени Unix (время прошло с 00:00:00 UTC, 1 января 1970 г.). Здесь мы потенциально сталкиваемся с проблемой. Как JavaScript узнает, сколько времени прошло с этой даты? Он получает его от системных часов. Но поскольку системные часы живут в нашей машине, их можно настроить вручную или программно, следовательно, точность времени гарантировать нельзя.

В этой ситуации performance.now() более надежен. Он не зависит ни от конкретного момента в истории, ни от нашей системы, потому что возвращает количество миллисекунд, прошедших с начала жизни документа.

Небольшое примечание: из соображений безопасности время, возвращаемое performance.now(), округляется, поэтому оно может быть менее предсказуемым. Однако погрешность не имеет большого значения, если мы используем ее для личного тестирования.

performance.now() полностью поддерживается во всех современных браузерах, начиная с Chrome 24, Firefox 15 и IE10.

Создавайте компонуемые веб-приложения

Не создавайте веб-монолиты. Используйте Bit для создания и компоновки несвязанных программных компонентов — в ваших любимых фреймворках, таких как React или Node. Создавайте масштабируемые интерфейсы и серверные части с мощным и приятным опытом разработки.

Перенесите свою команду в Bit Cloud, чтобы совместно размещать и совместно работать над компонентами, а также значительно ускорить, масштабировать и стандартизировать разработку в команде. Начните с компонуемых интерфейсов, таких как Design System или Micro Frontends, или исследуйте компонуемый сервер. Попробуйте →

Узнать больше