2016-04-29 6 views
1

cputime();は、Octaveセッションで使用されるCPU時間を返します。 Hereは、コードの処理時間を測定する1つの方法を述べています。オクターブでのコードの処理時間の評価について

t = cputime; 
...%your code 
...%computing 
...%when you are done 
printf('Total cpu time: %f seconds\n', cputime-t); 

はオクターブのドキュメントでは、我々はそれがクロックから返された2時間値の間(秒)差を返し、etime();関数ファイルを使用することができます。このように

t0 = clock(); 
# many computations later... 
elapsed_time = etime (clock(), t0); 

この違いは何ですか? etimeは私のシステムの時計の時間を使用していますか?コードの処理時間を収集するにはどうすればよいでしょうか?

答えて

2

cputimeを使用する最初のコードスニペットは、コードがCPU上で実行された時間を測定します。 2番目のスニペットは壁時計の時間を測定します(btw:これを測定するためにticとtocを使用します)。ウォールクロックには、CPUが他のスレッドを実行していたか、IOを待っていた時間が含まれています。

あなたが測定したいものはあなた次第です。私は私のコードをベンチマークしたいのであれば、通常tic/tocでウォールクロックを使用します。

シングルスレッドのアプリケーションでは、壁時計の時間がcputime以上(CPUが他のスレッドも処理していた時間が含まれるため)です。複数のコアを持つマルチスレッドアプリケーションでは、cputimeはウォールクロック時間よりも長くなる可能性があります。