2011-11-14 10 views
0

可能性の重複:
C++ Timer function to provide time in nano seconds
High resolution timer with C++ and Linux?タイミング機能

私はいくつかのC関数を時間を計るしたい、と私は体系的な方法を考え出すしようとしていますそうすること。これまでのところ、私は何を持っていることは、タイミングの最も単純な形式である:

#include <sys/time.h> 
struct timeval start_time, end_time; 
gettimeofday(&start_time, NULL); 
<my function> 
gettimeofday(&end_time, NULL); 
total_usecs = (end_time.tv_sec-start_time.tv_sec) * 1000000 + 
    (end_time.tv_usec-start_time.tv_usec); 
printf ("parfib,%ld,%d\n",(long)res,total_usecs); 

私も

timespec time1, time2; 
int temp; 
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time1); 
    <my function> 
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &time2); 
cout<<diff(time1,time2).tv_sec<<":"<<diff(time1,time2).tv_nsec<<endl; 

を発見したしかし、たとえstd=gnu99と私は(私は上記をコピーし、この作業を取得することができませんでしたウェブサイトのコードですが、コンパイルする前にCに翻訳しました:)いずれにしても、私がやっているようなタイミング機能について議論しているドキュメントやブログ、または何かを知っている人がいるかどうかは疑問です。 BEWARE、私はgprofなどのプロファイラーの後ではないので、私はこのプロファイラを手作りにする必要があります。

ありがとうございます。あなたが必要となる第二の例をコンパイルするに

+0

私はあなたが時間機能よりも良いサンプリングを必要と思いますか? –

+0

"私はこのプロファイラが手作りである必要があります"。 * measure *を目標にしている場合は、の周りにループをラップするだけで、必要な精度を得ることができます。スピードアップの機会を効果的に見つけ出すことが目標であれば、測定はできません。 * [これはそれです。](http://stackoverflow.com/questions/375913/what-c​​an-i-use-to-profile-c-code-in-linux/378024#378024)* –

答えて

3

:あなたがターゲットとしているPOSIXバージョン

gcc -Wall -Wextra -D_POSIX_C_SOURCE=199309L timer.c -lrt 

_POSIX_C_SOURCE指定 - それはすべてのシステムヘッダファイルが含まれます前に定義する必要があり、そう-Dを経由して、それをやってすることは最も安全です。 clock_gettimeもまた、リベット(-lrt)への結合に依存する。

関連する問題