Hatena::Groupjavascript

JavaScriptで遊ぶよ

 | 

2009-10-15

毎秒100回の続き

08:31

Mozilla の人も問題意識はあるみたい。

We need a way to give the browser control over animation frame rates and the timing of when animations actually draw. Having everyone doing their own setTimeout()-based animation is terribly inefficient; basically if there are 5 independent animations each wanting repainting 50 times a second, then we'll try to repaint 5*50=250 times a second. We should only repaint 20 times a second. Actually, we should repaint N times a second where N is chosen by the browser to be no higher than the user's screen refresh rate.

JS Animation API - mozilla.dev.platform | Google Groups

WHATWG でも。

window.isVisible のようなプロパティを提供するとか、ブラウザが背面のタイマーを自動的に切ったりできるようにするとか議論されてるけど、現状スクリプト側からなんとかするのは難しいのだから、ブラウザ側が何か用意しなければいけないのは確かだと思う。

可能性のある方法と自分の意見を書いてみる。

  • window.isVisible のようなプロパティ
    • isVisible === false でも毎秒100回タイマーを回してそれをチェックしに行くだけで CPU 時間を使う。
    • それはブラウザの実装があまりにも酷いと思うのでなんとかしたほうがいいと思うけど。
    • ページ側の awareness に任せるの?
  • ブラウザが背面のタイマーを切る。
    • 背面のタブが意図的に何かしようとする場合もあると思う。サーバーと通信とか。
    • いつタイマーを切るか、タイマーの実行間隔を開けるのかがブラウザの実装依存になりがち。
  • "visible" イベント。
    • 同様に、ページ側の awareness に任せるの? という問題。
    • 一番よさそうな気がする。
  • window.mozStartAnimation() & window.mozEndAnimation()
トラックバック - http://javascript.g.hatena.ne.jp/edvakf/20091015
 |