[解決済み] JavaScriptでマイクロ秒のタイミングを計る
質問
JavaScriptでマイクロ秒の分解能を持つタイミング関数はありますか?
私が知っているのは timer.js のような他のフレンドリーなブラウザ、Firefox、Safari、Opera、Epiphany、Konqueror、などのためのソリューションがあることを期待しています。 私はどの IE もサポートすることに興味はありませんが、回答は を含む IE を含む回答は歓迎されます。
(JSにおけるミリ秒単位のタイミングの精度の低さを考えると、この件に関しては期待しない!)
更新: timer.js はマイクロ秒の解像度を宣伝していますが、それは単にミリ秒の読み取りを 1,000 倍するだけです。 テストとコード検査で確認済み。 ガッカリです :[
どうすれば解決するのか?
Mark Rejhon の回答で言及されているように、最新のブラウザには、サブミリ秒の解像度のタイミング データをスクリプトに公開する API があります。
W3C 高解像度タイマー
で、別名
window.performance.now()
.
now()
は、従来の
Date.getTime()
よりも優れています。
-
now()
はサブミリ秒の解像度を持つ double で、ページのナビゲーションが始まってからのミリ秒数を表します。 これは、端数のマイクロ秒の数を返します(例えば、1000.123の値は1秒と123マイクロ秒です)。 -
now()
は単調に増加する。 これはDate.getTime()
は おそらく は、その後の呼び出しで前方または後方にジャンプする可能性もあります。 注目すべきは、OS のシステム時刻が更新された場合です (原子時計同期など)。Date.getTime()
も更新されます。now()
は常に単調増加することが保証されているので、OS のシステム時刻の影響を受けません -- 常に壁時計の時刻になります (壁時計が原子時計でないと仮定して...)。
now()
が使用するほとんどの場所で使用することができます。
new Date.getTime()
,
+ new Date
と
Date.now()
があります。 ただし、例外として
Date
と
now()
は混ざらないので
Date
は
unix-epoch
(1970年からのミリ秒数)、一方
now()
はページのナビゲーションが始まってからのミリ秒数です (したがって、これは
Date
).
now()
は、Chrome stable、Firefox 15+、IE10でサポートされています。 また、いくつかの
ポリフィル
も利用可能です。
注意
を使用する場合
ウェブワーカー
を使用する場合は
window
変数は利用できませんが、その場合でも
performance.now()
.
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでメールアドレスを検証するのに最適な方法は何ですか?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】オブジェクトからプロパティを削除する(JavaScript)
-
[解決済み] 上級者向けJavaScript。この関数はなぜ括弧でくくられるのですか?重複
-
[解決済み] reactのrender関数でdynamic hrefを作成するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] AngularJSのエラーです。Cross Origin リクエストはプロトコルスキーム http, data, chrome-extension, https に対してのみサポートされています。
-
[解決済み] <Enter>でjQuery UIダイアログを送信する
-
[解決済み] Node.jsでbase64エンコードされた画像をAmazon S3へアップロードする
-
[解決済み] 文字列がhtmlであるかどうかをチェックする
-
[解決済み] Reactコンポーネントでthis.setStateを複数回使用するとどうなりますか?
-
[解決済み] JavaScriptのtoString()関数をオーバーライドして、デバッグ用に意味のある出力を提供することは可能でしょうか?
-
[解決済み] JavaScriptで文字列を数値に変換する最速の方法は何ですか?
-
[解決済み] 各オブジェクトに?重複
-
[解決済み] querySelectorAllがない場合、ライブラリを使用せずに属性で要素を取得する?
-
[解決済み] V8 Javascript エンジンのスタンドアロン実行