0

プロセッサが高速であるほど、コードが高速に実行されることを願っています。

を使用して、コードをミリ秒の精度で測定できます。

new Date.getTime()

両者の相関関係は?

これが、たとえば 3.2 GHz で動作するプロセッサに関連しているとどのように期待できますか。

非常に大まかな見積もりであっても、この関係を定量化できる人はいますか?

// start_time

run some simple code to be timed.

// end_time
4

1 に答える 1

2

JS スクリプトに割り当てられる[編集: CPU ] クロック時間は、次のようなさまざまな要因によって決まります。

  • ブラウザ/バージョン
  • OS
  • 現在の電源状態

これのデモンストレーションは、Windows 8 の [高度な電源オプション] メニューで見ることができます。Internet Explorer ノードを展開すると、以下のエントリがJavaScript timer frequency. それはまさにあなたが考えているものです - JS クロックが「刻む」頻度を制御する設定です。1 秒あたりのティック数が多いほど、JS エンジンがコードを実行する頻度が高くなり、より多くのコードが実行され、より多くの電力が必要になります。

あなたの質問に答えるには: はい、非常に一般的な意味で、プロセッサのクロック速度は特定の JS の実行速度を決定できますが、それが単純な相関関係であると仮定するのは間違いです。

編集(詳細):リンクを掘ることはできませんが、見つけたらここで更新します. setTimeoutまたはを使用してsetInterval、実際に尊重されるこれらのメソッドに渡すことができる時間の最小単位は 100(ms) です。それよりも高い周波数を持つことは可能ですが、保証されているのは 100ms だけです

この記事で考えていたことに近いものを見つけました: http://javascript.info/tutorial/settimeout-setinterval

基本的に、キューベースで動作する JavaScript タイマーでは、 を呼び出すことができ、リクエストは 10 ミリ秒後に実行するためにキューに入れられますが、それはその時間が経過した後に実行されるという意味ではなく、実行するためにキューに入れられているだけですsetTimeout(fn, 10)。それで。予想と実際の差 (しきい値、おそらく 100 ミリ秒以上) を測定すると、オフセット データを収集して、スクリプトが実行されている結果の周波数 (または「クロック速度」) を計算できます。より正確な方法で JS をベンチマークする例については、この記事を参照してください。

その 2 番目の記事から、取得できる最小タイムアウトは 4 ミリ秒であることがわかります。

グラフィックス パフォーマンスの測定に setTimeout を使用することも、悪い考えです。setTimeout 間隔はブラウザーで 4 ミリ秒に制限されているため、最大限に活用できるのは 250 FPS です。歴史的に、ブラウザーにはさまざまな最小間隔があったため、ブラウザー A が 250 FPS (最小間隔 4 ミリ秒) で実行され、ブラウザー B が 100 FPS (最小間隔 10 ミリ秒) で実行されていることを示す、非常に壊れた自明な描画ベンチマークがあった可能性があります。明らかにAの方が速いです!いいえ!A が 3 ミリ秒、B が 1 ミリ秒かかったとします。描画時間が最小の setTimeout 間隔より短いため、FPS には影響しません。また、ブラウザーが非同期でレンダリングする場合、すべての賭けは無効になります。何をしているのかわからない場合は、setTimeout を使用しないでください。

于 2013-03-22T15:55:38.230 に答える