[Javascript] マイクロ秒の取得方法いろいろ

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

Javascriptを使って、どんなWEBアプリケーションでも組める様になってきました。
 

Nodejsを使って、サーバーサイドJavascriptとく合わせる事ができると、もはやネットワークビジネスは無敵です。
 

ただ、その先にサーバー管理などのスキルも必要になり、pythonやrubyなども覚えなければならなくなりますが、その領域になったプログラマーは、かなりの上級で、プログラミングを仕事にするということは、遊びながら仕事をしている感覚になるでしょう。
 

そんな僕もまだまだわからないことがたくさんあり、本日仕事の作業をしながら調べごとをして初めて知った内容があったので、
 

今更ながら、Javascriptの日付操作の中で、あまり扱わないマイクロ秒を取得したり操作したり、データを何に使うのかを検証してみたいと思います。

マイクロ秒の取得方法色々

1. Date関数を使って取得

 

この手法は、僕が最も多く活用する技ですが、それにはワケがあって、通常にDate()として実行するよりも若干ですが、スピードが早いというベンチを昔取ったことがあり、それ以降常用するようにしています。
 

この結果の数値の下3桁が、マイクロ秒に当たります。
 
わかりやすくすると、以下のようにするといいでしょう。
 

 

最初の数値は、UNIXタイムと言われる数値で、1900年からの秒数を表しています。
 

2. now()関数で取得

 

上記の結果と同じものが出力されます。
 

単純に上記のショートカットコマンドと考えてもいいですが、2パターンの書き方を覚えておくと助かる事もあるかもね・・・
 

上記でも書きましたが、+記述した方が、処理速度は早いようです。
おそらく、now()プロパティがくっついてる分、処理が増えてるからでしょうね。

getTime()を使用

 

さらに類似ですが、Date関数でgetDate()と同じ要領で取得する方法です。
 

似たような記述がたくさんあるので、どれを使えばいいか迷うことがありますが、Date関数をインスタンスで使う場合は、このやり方のほうがスマートなプログラムが書けるので、これも割とよく使う方法ですね。

4. performance関数を使う

 

あまり使わない”performance”関数ですが、気になる人は、リファレンスページを見て学習しておきましょう。
 

https://developer.mozilla.org/ja/docs/Web/API/Performance
 

基本的にはページのパフォーマンスを抽出する関数なのですが、サンプルのようにnow()プロパティで、マイクロ秒の取得が可能です。
 

これも、整数の下3桁がマイクロ秒になるのですが、扱いが少しめんどくさそうですね。
 

しかも、環境に応じて桁数なども変わってくるので、あまり実践では使えないかもです。

javascriptのマイクロ秒って何に使うの?

秒をさらに3桁も掘り下げたマイクロ秒は、何かの処理を行った時の処理時間の計測に使われる場合が多いでしょう。
 

Googleの検索結果は1秒高速化する毎に、会社の売上げ(アドワーズ等の)がサラリーマンの年収よりも多く変動するため、G社では、高速化する処理プログラムに社内懸賞金を発行しているという噂を聞いたことがありますが、そこでは秒単位ではなく、マイクロ秒単位でのやり取りがされていることは容易に想像できますね。
 

あと、WEBサービスのタイムスタンプで、アクセスが集中するようなサイトでは、マイクロ秒をタイムスタンプにつけて、ユーザーのユニーク値をより細かく分析できるようにするパターンもあります。
 

少しグレー領域である。「ブラウザフィンガープリント」というユーザーの個別識別子発行の際は、マイクロ秒+IPアドレス+その他端末識別子などを個別に発行しているケースが多いようです。
 

身近なところでは、Googleの識別子が、ブラウザの開発モードで読み取ることができますが、似たようなポリシーになっていることが確認できますね。
 

やはりデジタルの世界では、マイクロ秒での管理が必要なケースが多いようなので、プログラマー業の人は、こうした処理を避けずにやりましょう。

2 comments

  • マイクロ秒取得で検索をして参考にさせていただきました。
    一点気が付いた箇所があったのでコメントさせていただきます。

    > 最初の数値は、UNIXタイムと言われる数値で、1900年からの秒数を表しています。

    UNIXタイムの起点は世界標準時の1970年1月1日0時0分0秒からになるかと思います。
    [参考]
    https://ja.wikipedia.org/wiki/UNIX%E6%99%82%E9%96%93

    もしjavascriptの実装がそうでないのであれば一般認知のUNIXタイムとは違うと思いますので追記が必要かと思います。
    ご確認いただければ幸いです。

    • ご指摘ありがとうございます。
      気がついていたのですが、修正ができていませんでした。
      コードを使われる方はご留意していただきご使用くださいませ。

Leave a Reply to dummy コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です