2012-03-09 9 views
3

私はどのように、私のプログラムが計算よりリアル時間がかかった理由を私は知らないどのくらい私のプログラムを取って、私のコードでは、私は時間なぜ私のCプログラムはそれ自身で計算された時間以上の時間がかかりましたか?

time took calculated by program: 71.320 sec 

real 1m27.268s 
user 1m7.607s 
sys 0m3.785s 

を計算するためにタイマーを入れて測定するために、Linux上でtimeコマンドを使用します理由を見つけてそれを解決するには?

============================================== ========

ここ

私は私のコードで時間を計算する方法です。

clock_t cl; 
cl = clock(); 

do_some_work(); 

cl = clock() - cl; 
float seconds = 1.0 * cl/CLOCKS_PER_SEC; 
printf("time took: %.3f sec\n", seconds); 

答えて

14

プログラムを起動するためのオーバーヘッドと、プログラムの終了と時間自体には、おそらくオーバーヘッドがあります。その上で

、マルチプロセスのオペレーティング・システムでは、あなたのプロセスは他のプロセスが保留にあなたの中に実行することを意味し、「アウトを切り替える」ことができます。これはタイミングも混乱させる可能性があります。

は私が時間の出力を説明してみましょう:

  • realは、すべてのオーバーヘッドを含む実際のクロック時間を意味します。
  • userは実際のプログラムで費やされた時間です。 1m7.607s + 0m3.785s == 71.392s
  • sysuser + sysはあなたの時間に非常に近いことをカーネルシステム(アウト切り替え、私は、例えば、約以前の話をした)

注意が費やす時間です。

最後に、どのように時間を計算したのですか?その情報がなければ、問題があればそれを正確に伝えるのは難しいです。

+0

プログラムで時間を計算するコードサンプルを追加しました –