web-dev-qa-db-ja.com

スクリプトの実行時間を測定するにはどうすればよいですか?

スクリプトが最初から最後まで実行されるのにかかる時間をどのように測定しますか?

 start-timing
   //CODE
 end-timing
15
Skizit

[〜#〜] edit [〜#〜]:2011年1月、これは利用可能な最善のソリューションでした。他の解決策(performance.now()などが今優先されるべきです。

var start = new Date();
    // CODE
var time = new Date() - start;
// time is the number of milliseconds it taken to execute the script

これを関数でラップすることもできます。

function time_my_script(script) {
    var start = new Date();
    script();
    return new Date() - start;
}

// call it like this:
time = time_my_script(function() {
    // CODE
});

// or just like this:
time = time_my_script(func);

コードをプロファイリングしようとしている場合は、JavaScriptプロファイラーを含む Firebug 拡張機能を試してみることをお勧めします。プロファイリング用の優れたユーザーインターフェイスがありますが、 console api :を使用してプログラムで実行することもできます。

console.time('timer1');
    // CODE
console.timeEnd('timer1'); // this prints times on the console

console.profile('profile1');
    // CODE
console.profileEnd('profile1'); // this prints usual profiling informations, per function, etc.
42
Arnaud Le Blanc

performance.now()の代わりにnew Date()を使用してください。これにより、より正確で優れた結果が得られます。この回答を参照してください https://stackoverflow.com/a/15641427/7300

8
Morteza Ziyae

これがストップウォッチのように機能するクイック機能です

var Timer = function(id){
  var self = this;
  self.id  = id;
  var _times = [];
  self.start = function(){
    var time = performance.now();
    console.log('[' + id + '] Start');
    _times.Push(time);
  }
  self.lap = function(time){
    time = time ? time: performance.now();
    console.log('[' + id + '] Lap ' + time - _times[_times.length - 1]);
    _times.Push(time);
  }
  self.stop = function(){
    var time = performance.now();
    if(_times.length > 1){
      self.lap(time);
    }
    console.log('[' + id + '] Stop ' + (time - _times[0]));
    _times = [];
  }
}
// called with
var timer = new Timer('process label');
timer.start(); // logs => '[process label] Start'
// ... code ...
timer.lap();   // logs => '[process label] Lap ' + lap_time
// ... code ...
timer.stop();  // logs => '[process label] Stop ' + start_stop_diff
0
Steven Kaspar

ser Timing api を使用します

例:JSファイルのbeginningに次のように書き込みます:performance.mark("start-script")

jSファイルのendで書き込み:performance.mark("end-script")

その後、あなたもそれを測定することができます:

performance.measure("total-script-execution-time", "start-script", "end-script");

これにより、スクリプトの実行全体を実行するのにかかる時間がわかります。

0
adardesign