获取执行时间的宏

以前曾经写过两个宏,一个是开始时间,一个是结束时间,不过可能有bug,如下是修改后的版本:

windows平台:


#define   MACRO_LOOP_BEGIN(times)        \
        {       \
                 int   ___xxxx__xiyi_eyu_maomao;   \
                LARGE_INTEGER m_nFreq;  \
                LARGE_INTEGER beginTime, endTime;       \
                QueryPerformanceFrequency(&m_nFreq);    \
                QueryPerformanceCounter(&beginTime);    \
                 for(___xxxx__xiyi_eyu_maomao = 0; ___xxxx__xiyi_eyu_maomao < (times); ++___xxxx__xiyi_eyu_maomao)    \
                {

#define MACRO_LOOP_END          \
                }               \
                QueryPerformanceCounter(&endTime);      \
                printf( " time:%lld us" ,(endTime.QuadPart*1000000/m_nFreq.QuadPart) - (beginTime.QuadPart*1000000/m_nFreq.QuadPart)); \
        }


你可能注意到了,这里用的变量名很奇怪, ___xxx_xiyi_eyu_maomao, 这是为了避免和之前使用的局部变量重复,导致在宏中间误使用了局部变量。

你可能感兴趣的:(c,执行时间)