1

一連の実験でユーザーの応答時間を測定するために必要なアプリケーションを開発する必要があります。このアプリケーションは約 100 台のコンピューターで実行されるため、インストールと更新の実行を減らすにはブラウザー ベースのアプローチが最適であると述べました。そうは言っても、ブラウザーのタイマー、特に JavaScript タイマーの精度について読んだので、数ミリ秒から 10 ~ 15 ミリ秒以上の遅延がある可能性があることを学びました。この種の遅延は、ユーザーが画面上のビジュアル キューに対する応答時間を測定する際に、これらの実験の精度に悪影響を及ぼす可能性があります。

javascript を介してブラウザ内で実行されている Web アプリケーションの正確なタイマーを取得する既知の方法はありますか? 同様に、これらの実験の一部では、ユーザーがマウス カーソルを回転する立方体の上に保持できる時間を確認するなど、単純な 2D アニメーションが必要です。HTML5 と Javascript を使用したいのですが、Flash は使用できません。

4

3 に答える 3

2

確かに、タイマーの間隔に依存することはできませんが、新しい Date オブジェクトに依存することはできます。例えば:

var previousTime = new Date().getTime(); // returns milliseconds of "now"

var timer = setInterval( function() {
   var currentTime = new Date().getTime();
   var millisecondsSinceLastUpdate = currentTime - previousTime;
   previousTime = currentTime;
   alert( 'milliseconds since last update: ' + millisecondsSinceLastUpdate );
}, 1 );
于 2012-12-18T19:12:44.227 に答える
1

@dqhendricks が示唆するように、新しいDateオブジェクトを使用する必要があります。ただし、これを一貫して正確にする必要がある場合は、同じコンピューターで同じブラウザー バージョンを使用し、バックグラウンドで何も実行しないようにする必要があります。

このデモを firefox と chrome でチェックしてください。端をクリックして、できるだけ早くカーソルを外側に移動します。FF で取得できる最小値は 6MS、Chrome で取得できる最小値は 42MS です。

これらの値は、マシン間でさらに大きく異なる場合があります。512MB の RAM と 50% のシングル コア キャップを備えた VM をセットアップし、FF で 5 つのタブを開いてテストを試みました。得られた最低値は 52MS です。

したがって、ユーザーのブラウザ、PC、およびバックグラウンドで実行されているものを制御できない限り、データが正確であることは期待できません.

于 2012-12-18T19:26:59.463 に答える
0

新しいブラウザーを使用している場合は、Date オブジェクトよりも精度の高い performance.now() を使用できますが、ブラウザーを使用する場合のその他のパフォーマンスの問題は引き続き適用されます:(

http://updates.html5rocks.com/2012/08/When-milliseconds-are-not-enough-performance-now

于 2012-12-19T03:43:23.790 に答える