Как измерить точность выполнения - PullRequest
0 голосов
/ 29 декабря 2018

Я пытаюсь выяснить, какова точность performance.now в Chrome.Используя следующий код:

const results = []
let then = 0
for(let i = 0; i < 10000; i++) {
    const now = performance.now()
    if (Math.abs(now - then) > 1e-6) {
        results.push(now)
        then = now
    }
}
console.log(results.join("\n"))

Я получаю следующие результаты:

55058.699999935925
55058.79999976605
55058.89999959618
55058.99999989197
55059.09999972209

Насколько я понимаю, эти значения даны в секундах, что означает, что каждое измерение находится на расстоянии примерно 100 мс.Является ли моя методология тестирования ошибочной или производительность в настоящее время ограничена разрешением 100 мс в Chrome?Я посмотрел онлайн, и то, что я нашел, заявило, что точность составляет 100 мкс с джиттером в 100 мкс.

1 Ответ

0 голосов
/ 29 декабря 2018

Эти результаты в миллисекундах (55K секунд означало бы, что ваша страница открывалась на 15 часов, когда этот скрипт выполнялся ...)

Что касается точности, то теперьЗависит от браузера и может измениться, когда будут найдены лучшие решения против атак на основе времени, но да, Chrome действительно ограничивает точность (0,1 с) и добавляет дрожание (± 0,1 мс), Firefox действительно ограничивает еще больше (1 мс по умолчанию), а также добавляетджиттер (хотя там вы можете установить эти параметры), Edge любит Chrome в соответствии с этим комментарием , и кажется, что Safari делает только 1 мс зажим ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...