
直接上代码:
#if defined(_WIN32) && defined(_MSC_VER) #include <windows.h> double abtic() { __int64 freq; __int64 clock; QueryPerformanceFrequency( (LARGE_INTEGER *)&freq ); QueryPerformanceCounter( (LARGE_INTEGER *)&clock ); return (double)clock/freq*1000*1000; } #else #include <time.h> #include <sys/time.h> double abtic() { double result = 0.0; struct timeval tv; gettimeofday( &tv, NULL ); result = tv.tv_sec*1000*1000 + tv.tv_usec; return result; } #endif /* _WIN32 */
使用方法:
double timer = abtic(); ... printf("%fms\n", (abtic()-timer)*0.001);
另外的调试宏。
#if 1 double timer; #define ABTMS timer=abtic();fprintf(stdout,"%4d ",__LINE__) #define ABTME fprintf(stdout,"%4d %8.8f\n",__LINE__,(abtic()-timer)/1000.0f) #define SYCH cudaDeviceSynchronize() #else #define ABTMS #define ABTME #define SYCH #endif