我如何判断画布的缓慢性能是由绘图本身引起的,还是由计算应该绘制什么以及在哪里绘制的底层逻辑引起的?
我的问题的第二部分是:如何计算画布 fps?这就是我的做法,对我来说似乎是合乎逻辑的,但我也可能是绝对错误的。这是正确的方法吗?
var fps = 0;
setInterval(draw, 1000/30);
setInterval(checkFps, 1000);
function draw() {
//...
fps++;
}
function checkFps() {
$("#fps").html(fps);
fps = 0;
}
编辑: 根据内森的评论,我用以下内容替换了上面的内容:
var lastTimeStamp = new Date().getTime();
function draw() {
//...
var now = new Date().getTime();
$("#fps").html(Math.floor(1000/(now - lastTimeStamp)));
lastTimeStamp = now;
}
那么这个怎么样?您也可以仅计算自上次更新以来的毫秒差异,也可以通过这种方式看到性能差异。顺便说一句,我还对两者进行了并排比较,它们通常几乎一起移动(最多相差 2),但是,当性能非常低时,后者的峰值更大。