Performance.now()在多线程上下文中

问题描述 投票:0回答:1

我需要使用网络工作者来进行苛刻的计算。我的代码的开头和结尾分别有const t0 = Performance.now()const t1 = Performance.now()。我想报告t1 - t0作为执行计算所需的时间。但是,如果Web Worker实际上正在另一个线程中运行,是否意味着它可以被某些调度程序中断?如果是,则表示t1 - t0可能大于实际的计算时间(例如:timeline)...如何在JavaScript中的多线程上下文中测量执行时间?预先感谢任何愿意帮助我理解的人。

javascript multithreading performance web-worker time-measurement
1个回答
0
投票

DOMHighResTimeStamp API使用global monotonic clocks,永远不要暂停甚至限制它。

[在某些情况下(例如,当标签页处于后台时),用户代理可以选择限制计时器和在该上下文中运行的定期回调,甚至完全冻结它们。任何此类节流都不应影响单调时钟返回的时间的分辨率或准确性。

因此,只要浏览器本身仍在运行,您就可以确信performance.now()将返回自创建工作程序以来的正确时间。确实,例如,如果计算机设置为睡眠状态,那么时钟将不再计时。

© www.soinside.com 2019 - 2024. All rights reserved.