キャンバスのパフォーマンスの低下の原因が描画自体にあるのか、それとも何をどこに描画すべきかを計算する基礎となるロジックにあるのか、どうすればわかりますか?
私の質問の 2 番目の部分は次のとおりです。キャンバス 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 つを並べて比較しましたが、通常はほとんど一緒に動きました (最大で 2 の違い) が、パフォーマンスが非常に低い場合、後者の方がスパイクが大きくなりました。