随着Html5的开始,我们看到了更多关于视频或画布元素的实验。
在使用画布进行实验时,例如制作带有颗粒的烟花,1000颗粒可能在现代机器上运行良好,但在3升机器上可能会非常慢。
无论如何都要对用户系统进行基准测试,以动态更改画布实验(或任何内容),以便对所述特定用户进行优化。
编辑:这可能是最好的解决方案:http://benchmarkjs.com/
答案 0 :(得分:8)
测量渲染几帧你正在做的任何事情所花费的时间,并相应地调整细节水平。如果您不介意动态更改细节,可以使用连续测量。
答案 1 :(得分:2)
FutureMark的Peacekeeper Benchmark几乎就是这样做的。我认为它也会测试其他一些东西,但它也会进行大量的画布基准测试。
我想你可以设计某种基准测试,测量用户在画布上的帧速率,然后根据它调整细节。这可以通过设置一个短的间隔并在画布上渲染事物,然后在每次迭代中使用Date
个对象来计算所花费的时间并基于此计算平均帧率来实现。
答案 2 :(得分:2)
编辑:哎呀......读得太快了。我的回答并不适用。
取决于您想要的准确度。
如果你不想要一些超级准确的东西,可能会有一些工作。
我看待它的方式;您最大的问题之一是考虑不同浏览器中的各种JS引擎,并根据特定浏览器和引擎的基线计量每个人。
例如,尝试在IE 5.5上运行任何SunSpider测试,然后在同一台计算机上的Google Chrome上运行...惊人的差异。你必须考虑到这一点。 http://www.webkit.org/perf/sunspider/sunspider.html
理想情况下,您也希望关联不同浏览器之间的分数(即,此测试在IE 6中的机器A上以x ms运行,在IE 8中在同一台机器上以y ms运行,因此我可以关联IE通过使用不同的平均因子得到6分到IE 8分数。可能很难获得足够大的数据样本量来完成有效的工作。
答案 3 :(得分:2)
应该很简单。只需保留一个帧计数器和经过的时间,无论什么功能更新您的画布,并将前者除以后者以获得FPS。您可以缩小粒子数/样本数等。动态地基于FPS。所以基本上 - 是的,但这完全是定制的。