Koo*_*Inc 117 javascript tabs google-chrome settimeout
我正在测试setTimeout使用此测试的准确性.现在我注意到(正如预期的那样)setTimeout并不是非常准确,但对于大多数设备并不是非常不准确.现在,如果我在Chrome中运行测试并让它在后台标签中运行(那么,切换到另一个标签并在那里浏览),返回测试并检查结果(如果测试完成),它们会发生显着变化.看起来超时运行速度慢得多.在FF4或IE9中测试没有发生这种情况.
因此,看起来Chrome暂停或至少减慢了无法关注的标签中的javascript执行速度.关于这个问题在网上找不到多少.这意味着我们无法运行后台任务,例如使用XHR调用定期检查服务器,并且setInterval(我怀疑看到相同的行为setInterval,如果有时间,我会编写测试).
有没有遇到过这个?这种暂停/减速会有解决方法吗?你会把它称为一个错误,我应该这样提交吗?
pim*_*vdb 79
我最近问过这个问题,这是设计上的行为.当选项卡处于非活动状态时,每秒最多只调用一次该函数.这是代码更改.
也许这会有所帮助: 当Chrome中的标签处于非活动状态时,如何使setInterval也能正常工作?
TL; DR:使用Web Workers.
Rus*_*hov 21
有一个使用Web Workers的解决方案,因为它们在单独的进程中运行并且不会减慢速度
我编写了一个可以在不更改代码的情况下使用的小脚本 - 它只是覆盖函数setTimeout,clearTimeout,setInterval,clearInterval
只需在所有代码之前包含它
http://github.com/turuslan/HackTimer
播放〜空的声音会强制浏览器保持性能-阅读以下注释后,我发现了它:即使选项卡未激活,如何使JavaScript在Chrome中以正常速度运行?
对于使用WebSockets的浏览器游戏,我需要按需提供无限的性能,因此我从经验中知道使用WebSockets不能确保无限的性能,但是从测试来看,播放音频文件似乎可以确保它的性能。
这是我为此目的创建的2个空音频循环,您可以在商业上免费使用它们:http : //adventure.land/sounds/loops/empty_loop_for_js_performance.ogg http://adventure.land/sounds/loops/empty_loop_for_js_performance.wav
(它们包括-58db噪声,-60db不起作用)
我根据需要使用Howler.js播放它们:https : //github.com/goldfire/howler.js
function performance_trick()
{
if(sounds.empty) return sounds.empty.play();
sounds.empty = new Howl({
src: ['/sounds/loops/empty_loop_for_js_performance.ogg','/sounds/loops/empty_loop_for_js_performance.wav'],
volume:0.5,
autoplay: true, loop: true,
});
}
Run Code Online (Sandbox Code Playgroud)
令人遗憾的是,没有内置方法默认情况下可以打开/关闭完整的javascript性能,但是,加密矿工可以使用Web Workers劫持所有计算线程,而无需任何提示:|
| 归档时间: |
|
| 查看次数: |
81607 次 |
| 最近记录: |