全然知られてないperformance.now()。僕もつい最近知りました。恥ずかしい。
performance.now()とは
現在時刻のスタンプを返します。new Date()と違うのは1000分の1ミリ秒まで計測できる点です。
例えばこんなことができます。
var t0 = performance.now(); someFunc(); var t1 = performance.now(); console.log(t1 - t0);
普通なら10000回関数を実行して何秒なのかを計りますが、performance.now()は1000分の1ミリ秒まで計れるので必要ありません。
メリット
V8なんかでは10000回もループを回すと内部で最適化をしてしまい、実は関数本体のパフォーマンスが計れてないことがあります。
performance.now()なら関数実行が1回なので最適化なしの本当のパフォーマンスを計れます。
注意点
performance.now()は関数を1回しか呼ばないので1回データをとって終わり、ではなく数回データをとって平均をとる、中央値をとるなどする必要があります。
それと、performanceはデフォルトで定義されたオブジェクトです。上書きすると何が起きるかわかりません。知らないと使いそうですので注意しましょう。
終わりに
使えるときはバンバン使って脱Dateしましょう。