我正在为 JavaScript 性能竞赛构建一个测试平台。其中一项任务要求参赛者优化负责处理画布动画的 JavaScript 代码。提交解决方案后,服务器使用PhantomJS运行它并读取 20 秒动画后的平均 FPS 数。问题是我得到 3-4FPS 优化和未优化的代码。这使得无法判断代码是否得到了改进。
几个事实:
- 我 100% 确定 phanotmjs 正确渲染动画(做了几个截图)
- 在浏览器中未优化的代码以 13FPS 运行,优化以 58FPS 运行
- phantomjs 不支持
requestAnimationFrame
,所以我不得不使用polyfill - 我正在使用下面的代码来测试 FPS 的数量
frameCounter.js
var frameCounter = (function() {
var frames = 0;
var startTime = new Date();
function bump() {
frames++;
window.requestAnimationFrame(bump);
}
bump();
return {
getFPS: function() {
var time = (new Date() - startTime) / 1000;
return (frames/time).toPrecision(4);
}
}
})();
我的问题是:如何以编程方式测量画布动画的性能?