在未聚焦的选项卡中运行时的Javascript性能

nic*_*ckf 11 javascript firefox google-chrome

似乎最近版本的Chrome和Firefox*已经发生了变化,现在Javascript执行似乎与运行它的标签不同是目前关注的标签.

当我运行我的Javascript单元测试时,它们通常需要大约20秒才能完成,但现在,当选项卡未聚焦时,它需要超过2000秒.但奇怪的是,每个单独测试的运行时间不受影响(大多数仍然<10ms).我正在使用的测试setTimeout(0)运行器在运行每个测试之间添加一个,以便浏览器在执行时不会锁定,因此这似乎是可能的罪魁祸首.

有没有办法告诉Javascript引擎不要"deprioritise"该选项卡?很高兴能够在后台运行我的测试而不必看自己......

*对不起,我真的不在乎尝试安装旧版本以找到何时开始发生.至少,它现在正在Firefox 5.0和Chrome 12上发生.

Jam*_*ice 11

setTimeout并且setInterval在未聚焦的选项卡中被限制为至少1000毫秒.是提到它的Bugzilla报告.这是类似的Chromium bug报告.我相信自从版本11以来Firefox 5和Chrome中就是这种情况.

MDN称:

在(Firefox 5.0/Thunderbird 5.0)和Chrome 11中,超时被限制为在非活动选项卡中每秒不超过一次(1000毫秒).有关在Mozilla或crbug.com/66078中有关此内容的详细信息,请参阅错误633421,以获取有关Chrome中的详细信息.

至于绕开这个限制让,你可以尝试在讨论的技术这篇文章,但我还没有改变的又自己试试吧.


Bor*_*sky 6

特别是对于Firefox,您可以dom.min_background_timeout_valueabout:config用于运行测试的配置文件中将首选项更改为您喜欢的数量.我不建议在你的默认浏览配置文件中这样做:高限制的原因是它在背景标签中削减了网站,咀嚼CPU更新愚蠢的代码等.