javascriptで実行時間を計りたいとき,Date.now() と new Date()はどちらを使うべき?
スポンサーリンク
タイトル通り.ベンチマーク関数を作って計測. 百万回やった合計時間でどちらが速いか算出します.
(ブラウザ: Chrome Ver 32.0.1700.107 m)
Method
回数nと関数f,関数名nameを引数に取り関数fのn回の実行時間を計測し,ログに表示します.
/** * @param name 関数名 * @param n 回数 * @param f 対象 */ function benchmarkN(name, n, f) { console.log(name); var args = Array.prototype.slice.call(arguments).slice(3); var s = Date.now(); for(var i = 0; i < n; i++){ f.apply(null, args); } var t = Date.now() - s; console.log(': time = ' + t + 'msec'); return t; }
Testing
var times = 1000000; benchmarkN('new Date()', times, function() { return new Date(); }); benchmarkN('Date().now()', times, function() { return Date.now(); });
Result
method | time |
---|---|
new Date() | 233msec |
Date().now() | 142msec |
やはり,いちいちインスタンスを生成するnew Date()
は遅い.
ということで,当たり前の結果になりました.スッキリしたのでこれから計測時間を計りたいときはDate.now()
一択にします.