【发布时间】:2014-11-14 08:45:00
【问题描述】:
我注意到,当我在 YouTube 上(在 Chrome 中)播放视频时,我使用 CreateJS 开发的 HTML5 游戏运行的帧速率是通常的一半。
本身,在桌面上 - 运行 60fps 没问题。
YouTube 视频正在播放? 30fps!
奇怪的是,我似乎无法在另一台机器上重现该问题。是否与不同的显卡/驱动程序响应 requestAnimationFrame 调用的方式有关?
【问题讨论】:
-
你为什么对此感到惊讶?它是一台带有一个 CPU 的计算机。它一次只能做这么多。
-
这就像在说“好吧,如果我同时运行程序 B,我的操作系统运行程序 A 的速度会慢 50%。”我们生活在多线程 CPU 周期、多核的现代。所以不,我不认为英国皇家空军要求它一次做太多事情:P
-
我什至不知道“多线程 CPU 周期”是什么意思。多线程意味着机器拥有无限资源?如果机器负载很重,程序确实会运行得更慢,其他条件相同。
-
所以你的意思是因为一个视频在 YouTube 的一个窗口中播放,我的 RAF 在另一个浏览器窗口中调用 一半 因为我的 12 核 CPU 是 为保持 60fps 的运行速度而苦恼?
-
就其本身而言,RAF 是相当轻量级的。它只是管理一个请求队列并在有机会时调用它们。因此,唯一合乎逻辑的解释是,实际上浏览器/选项卡的周期越来越少,并且到达其处理管道中的点以较少地调用排队的 RAF 函数。除此之外,很难说,尤其是因为正如您所说,该问题在其他机器上无法重现。
标签: javascript google-chrome createjs frame-rate requestanimationframe