Вы слышали о 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, или исследуйте компонуемый сервер. Попробуйте →