2013-12-11 26 views
0

假设我们想知道函数的运行多久,我们就可以这样写代码如何编写一个获取函数运行时的宏?

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); 

但我怎么可以把它封装到一个宏这样的运行时(A),也许,运行(A,B,。 ..),有时几个功能一起运行。

+0

'gettimeofday'是不是标准的C还宣布POSIX过时,可以考虑使用'从POSIX或'timespec_get clock_gettime' '从C11开始。 –

+0

好的,这是我通过google获得的代码段,我从来没有在 – stonestrong

回答

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()); 
+0

之前使用它,你甚至可以用'#x“来更多地提供信息:使用时间:%f”'。 –

+0

非常感谢,它适用于我:) – stonestrong

+0

然而,当使用运行时(cudaKernel <<<1,1> >>());它失败了 – stonestrong

相关问题