JavaScript パフォーマンス コンテスト用のテスト プラットフォームを構築しています。タスクの 1 つは、カンバス アニメーションの処理を担当する JavaScript コードを最適化することを競技者に課します。ソリューションが送信された後、サーバーはPhantomJSを使用してソリューションを実行し、アニメーションの 20 秒後に平均 FPS 数を読み取ります。問題は、最適化されたコードと最適化されていないコードの両方で 3 ~ 4 FPS が得られることです。これにより、コードが改善されたかどうかを判断できなくなります。
いくつかの事実:
- phanotmjs がアニメーションを正しくレンダリングしていることは 100% 確信しています (いくつかのスクリーンショットを作成しました)。
- ブラウザーでは、最適化されていないコードは 13 FPS で実行され、最適化されたコードは 58 FPS で実行されます
- phantomjsはサポートしていないため、ポリフィル
requestAnimationFrame
を使用する必要がありました - 以下のコードを使用して、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);
}
}
})();
私の質問は、キャンバスアニメーションのパフォーマンスをプログラムで測定するにはどうすればよいですか?