2013-07-19 12 views
5

私はNode.jsというアプリを作って、別の解決策をC#と全く同じものにしました。両方のアプリケーションは、ディレクトリからすべてのjavascriptファイルを再帰的に取得し、uglify-jsコマンドを実行して、ファイルを縮小します。Node.jsアプリの合計実行時間を取得するにはどうすればよいですか?

私のプロジェクトでは、縮小化するために約150 JavaScriptファイルを持っており、C#アプローチは、(スレッドを使用して)すべてのものを行うために22S程度かかり。

Node.jsのドキュメントと書籍を読んだ後で、私はNode.jsのやり方を決めました。私はすでにそれをやってきましたが、私は

(ええ、私は知っている、私も非同期た C#内のスレッドを使用)...その非同期アプローチので、ものを行う総時間 Node.jsを報告することができません

Node.jsアプリの合計実行時間を取得するにはどうすればよいでしょうか?

Node.js v0.10.13win32として使用しています。

+1

あなたの総実行時間は、それがすべて完了するまでには時間がかかります。非同期な処理を行っても、処理が速くなるわけではありません。または、サブプロセスを実行していますか? Node.jsは(あなたのJS用の)スレッディングをしないので、具体的に何を測定したいですか? – Brad

+0

はい@ブラッド。私はサブプロセスを実行しており、node.jsアプリケーションがコマンドに戻るときに、それらのすべての実行時間を知りたいと思っています... – tetri

+0

CPU時間を探していない限り、プロセスが実行された時間を計測できますか? – Brad

答えて

4

console.time('Some_Name_Here');を使用して、スクリプトの実行が終了どこconsole.timeEnd('Some_Name_Here');を使用しています。

これはNode.jsのネイティブ機能であり、新しいDateオブジェクトを初期化する必要がありません。

console.time()メソッドの簡単なドキュメントは、http://nodejs.org/api/stdio.html#stdio_console_time_labelです。

+0

@Bagavatuありがとうございますが、私のアプリケーションには 'child_process'でさまざまな非同期関数があり、' console.timeEnd'をどこで呼び出すのか分かりません。そのためのグローバルな終了イベントはありますか? – tetri

+1

私は[プロセスイベント: 'exit'](http://nodejs.org/api/all.html#all_event_exit)と 'console.time()'も同様に動作します。 – tetri

3

時間の開始/終了のタイミング方法を使用できます。

メインスクリプトの冒頭で、あなたは時間をつかみます。その後、スクリプトの非常に開始時に

var start = Date.now(); 

process.on("exit", function() { 
    var end = Date.now(); 
    console.log("Time taken: %ds", (end - start)/1000); 
}); 

// all you code... 
// more code... 
+1

'Date'の代わりに' process.hrtime() 'を使用してください – cr0

+0

右。コンセプトは同じですが、cr0は正しいです。この場合。 http://nodejs.org/api/process.html#process_process_hrtime –

+0

を参照してください。process.uptime()を使用することもできますが、その正確さについては言えません。 –

関連する問題