Javascript 画布FPS人为限制为100fps?

Javascript 画布FPS人为限制为100fps?,javascript,html,canvas,Javascript,Html,Canvas,通过计算渲染的帧数并将FPS打印到画布上,我们可以看到它的最高帧数为100fps,这至少看起来是可疑的。为什么会这样 <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Canvas FPS artificial limiting</title> </head> <body> <canvas

通过计算渲染的帧数并将FPS打印到画布上,我们可以看到它的最高帧数为100fps,这至少看起来是可疑的。为什么会这样

<!DOCTYPE html>
<html lang="en">
 <head>
  <meta charset="utf-8">
  <title>Canvas FPS artificial limiting</title>
 </head>
 <body>
  <canvas id="c" width="320" height="240"></canvas>
  <script>
   var c = document.getElementById('c').getContext('2d'),
    f = 0,
    s = new Date;
   setInterval(function() {
    c.clearRect(0, 0, 320, 240);
    c.fillText(++f / ( ((+new Date) - s) / 1000 ), 8, 16);
   }, 0);
  </script>
 </body>
</html>

帆布FPS人工限制
var c=document.getElementById('c').getContext('2d'),
f=0,
s=新日期;
setInterval(函数(){
c、 clearRect(0,0,320,240);
c、 填充文本(++f/(+新日期)-s)/1000),8,16;
}, 0);

我目前在Firefox 4.0b6和Ubuntu10.10测试版上遇到了这个问题。

我明白了!根据本页:

setTimeout
setInterval
在Firefox上被限制为至少10ms(每秒100次迭代),以避免锁定和UI性能下降。这意味着,低于此值的延迟值将使用10ms(高达100fps)

这不是画布问题;这是对定时器最小延迟的人为限制


编辑:进一步阅读建议Chrome使用4ms钳制,可以对计时器进行250fps的人工限制。

您至少应该指定您使用的浏览器/平台。我的(chrome/mac)最高为215。完成了,谢谢。(15个字符)我在你的测试中得到了246ish(这里可能是i7)我使用的是超频到3.8GHz的Q9650,带有GTX260,所以我不认为我的电脑电源不足。还有一个事实,即测试中几乎没有CPU使用,100是一个神秘的“人造”数字。@Delan Azabani我不是说它不合算,我是说它对我来说不合算。因此,这可能与您的浏览器/驱动程序有关。我在windows7上使用Chrome。没错。而且,即使100 FPS对于实际用途来说也太多了。请参阅这篇关于API的文章,以获得更高效的动画: