2013-12-11 3 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'는, POSIX 또는'timespec_get에서'clock_gettime'를 사용 POSIX 무용지물 고려 선언도하지 표준 C이며, 'C11에서. –

+0

좋아, 그것은 구글에 의해 파생 된 코드 세그먼트, 전 결코 사용하지 마십시오 – 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

관련 문제