BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #11621同步于 2011/12/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖

PC上一次FOR循环时间怎么计算?

ttallen
2011/12/21镜像同步2 回复
PC上一次FOR循环时间怎么计算?
订阅后,新回复会通过你的通知中心匿名送达。
2 条回复
zengeronline机器人#1 · 2011/12/21
int main(int argc, char *argv[]) { //... #ifdef CALCULATE_SPEED double tmconsume;//second #ifndef WIN32 struct timeval m_tmstart, m_tmfinish; #else LARGE_INTEGER m_tmfreq, m_tmstart, m_tmfinish; if(!QueryPerformanceFrequency(&m_tmfreq)){ //print_per("cpu not support this kind of time functions: "); } #endif #endif //前期处理 #ifdef CALCULATE_SPEED #ifndef WIN32 gettimeofday(&m_tmstart, (struct timezone *)0); #else //WIN32 msleep(2000);/* if(!QueryPerformanceCounter(&m_tmstart)){ ;//print_per("cpu not support this kind of time functions: "); };*/ if(!QueryPerformanceCounter(&m_tmstart)){ ;//print_per("cpu not support this kind of time functions: "); }; #endif//WIN32 #endif //传送文件 #ifdef CALCULATE_SPEED #ifndef WIN32 gettimeofday(&m_tmfinish, (struct timezone *)0); tmconsume = (m_tmfinish.tv_sec - m_tmstart.tv_sec) + (m_tmfinish.tv_usec - m_tmstart.tv_usec)/1000000.0; #else //WIN32 if(!QueryPerformanceCounter(&m_tmfinish)){ ;//print_per("cpu not support this kind of time functions: "); }; tmconsume = ((double)m_tmfinish.QuadPart - (double)m_tmstart.QuadPart) / ((double)m_tmfreq.QuadPart); //trace("(%I64d - %I64d) / %I64d = %f\n", m_tmfinish.QuadPart, m_tmstart.QuadPart, m_tmfreq.QuadPart, tmconsume); #endif//WIN32 trace("file send complete[%.2f s, %.2f MB/s]\n", tmconsume, fileinfo.file_size/tmconsume/1024/1024); #else trace("file send complete\n"); #endif //后期处理 return 0; }
ArmStrong机器人#2 · 2011/12/22
如果一次循环耗时非常少,那么就看汇编,算周期,当然,如果要考虑到是访问cache还是d dr. 如果一次循环耗时是几十ms级别以下的,linux下面可以看jiffies变量,这个变量是定时 器中断的counter,定时器可以是1ms中断一次. 如果一次循环是百ms以上级别的,那么就用gettimeofday吧【 在 ttallen (Alan) 的大作中提到: 】 : PC上一次FOR循环时间怎么计算?