Performance.now () в многопоточном контексте - PullRequest
0 голосов
/ 17 апреля 2020

Мне нужно использовать веб-работников для сложных вычислений. У меня есть const t0 = performance.now() и const t1 = performance.now() соответственно в начале и конце моего кода. Я хочу сообщить t1 - t0 как время, необходимое для выполнения вычисления. Но если веб-работник фактически работает в другом потоке, означает ли это, что он может быть прерван каким-либо планировщиком? Если да, то это означает, что t1 - t0 может быть больше, чем фактическое время вычислений (например: timeline ) ... Как бы вы измерили время выполнения в многопоточном контексте, в javascript? Заранее спасибо всем, кто хочет помочь мне понять.

1 Ответ

0 голосов
/ 19 апреля 2020

API DOMHighResTimeStamp использует глобальные монотоны c часы , которые никогда не должны останавливаться или даже регулироваться.

В определенных сценариях ios ( например, когда вкладка имеет задний план), пользовательский агент может выбрать таймеры и обратные вызовы periodi c, запущенные в этом контексте, или даже полностью их заморозить. Любое такое регулирование не должно влиять на разрешение или точность времени, возвращаемого монотонными c часами.

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

...