少し遅れを感じるので、JavaScriptUIコードのプロファイリングを行っています。これまでのところ、いくつかのボトルネックを見つけて最適化しましたが、これに対する測定可能な要件を定義したいと思います。
人間が遅れに気付かないようにするために、どれくらい早く反応が起こるべきですか?たとえば、キーボードのキーが押されてから文字が画面に表示されるまでの検出可能な最小遅延はどれくらいですか?さらなる最適化が人間に何の違いももたらさないのはどの時点ですか?
多くのモニターのリフレッシュレートは約60〜120Hzの範囲です。それはマジックナンバーが約8-16msであることを意味しますか?
「キーを押す」イベントと画面に表示される文字を2つの別々のフレームとして考えると、ユーザーが画面を見ながらキーを押すと、その直後にそれを見たいと思うことを意味します。これは「その直後」は、応答時間が60Hz以上であることを意味します。
このため、映画で見られるのと同じ効果が得られるため、8〜16ミリ秒の値を実際に目標にする必要があります。言い換えると、ユーザーはそのような値の遅延を認識しません。
ただし、キーボードには独自のポーリング時間があり、スクリプト自体に必ずしも関連していない追加の遅延がその時間に干渉する可能性があることに注意する必要があります。これらの理由から、60 Hzを超える値を目指すと、わずかな遅延が発生する可能性のある他の影響に対して、より大きな安全マージンが得られます。
また、一部のアプリケーションでは100ミリ秒の遅延が目立たないように見えるかもしれませんが、10 Hzに対応しているため実際には目立ちます。そのリフレッシュレートで映画を再生すると、おそらく気付くでしょう。映画の各フレーム間のギャップ。このため、この値は、一般的な十分なコンテキストで実際に考慮されるべきではありません。
人間の目の感度は、画像の条件や部分によって異なるため、これに対応するために、必要に応じてより高いリフレッシュレートを検討する必要があります。
このリンク 画面の特性とその変化が人間の目でどのように認識されるかについての詳細情報があり、視覚に基づいて、特定のコンテキストでどのリフレッシュレートを目指すべきかを知ることができます。スクリプトの影響。
原則として、100msより速いものはすべて「インスタント」として認識される傾向があることがわかりました。それよりはるかに長く行くと、遅延は間違いなく顕著になります。もちろん、これは人によって少し異なり、遅延が発生している状況によっても異なります。
この例が役立つ場合があります: http://jsfiddle.net/QGmBy/
100ミリ秒で十分だという経験則を聞いたことがあります。リンクを探してみます...
イベントが1回だけ発生する場合は、100ミリ秒が上限になります。イベントが継続的な動きの一部である場合、スライドするもの([1つ以上]のピクセル)のようなもので100ミリ秒の遅延が発生すると、そのような遅延が目立つ可能性があるため、約10〜15ミリ秒の遅延が発生する可能性があります。互いに続く行。
また、状況、何が遅れているかにもよります。キーを押すイベント、何かがスライドする、他のマシンで発生するリアルタイムイベント、これらはすべて異なる「許容値」レベルを持ちます:)