0

関数 A が実行される時間を知りたい場合、次のようなコードを記述できます。

    struct timeval tpstart,tpend;  
    gettimeofday(&tpstart,NULL); 
    A(); 
    gettimeofday(&tpend,NULL); 
    float timeuse= tpend.tv_sec-tpstart.tv_sec + (tpend.tv_usec-tpstart.tv_usec) / 1000000; 
    printf("Used Time:%f\n",timeuse); 

しかし、Runtime(A)、おそらくRuntime(A、B、...)などのMACROにカプセル化するにはどうすればよいですか?いくつかの関数が一緒に実行されることもあります。

4

1 に答える 1

1

関数の戻り値を気にしないのであれば、人生は簡単です。

#define Runtime(x)  do { \
    struct timeval tpstart,tpend;  \
    gettimeofday(&tpstart,NULL);   \
    x; \
    gettimeofday(&tpend,NULL); \
    float timeuse= tpend.tv_sec-tpstart.tv_sec + (float)(tpend.tv_usec-tpstart.tv_usec) / 1000000; \
    printf("Used Time:%f\n",timeuse); \
} while(0)

Runtime( A() );
Runtime( A() ; B() );
于 2013-12-11T08:00:56.123 に答える