关于tbb计时的问题

茶禅如水 2007-12-25 10:34:45
#include "tbb/tick_count.h"

tick_count start = tick_count::now();
..........

tick_count stop = tick_count::now();
printf("Time to compute room assignments is %f seconds.\n",
(stop - start).seconds());

tbb中提供了这样一个计时的类,应该对线程安全的,可移植性好,在多线程程序计时可以用到。

大家用的什么计时?
...全文
207 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
OpenHero 2007-12-26
  • 打赏
  • 举报
回复
// 32 位
DWORD StartTime,ElapsedTime;
_asm {
RDTSC
mov StartTime, eax
}
//<.. you code.......>
_asm {
TDRSC
sub eax, StartTime
mov ElapsedTime, eax
}
printf("Time in CPU clocks %d", ElapsedTime);

// 64 位
__int64 StartTime, EndTime;
_asm {
RDTSC
mov DWORD PTR StartTime, eax
mov DWORD PTR StartTime+4, edx
}

// you code
_asm {
RDTSC
mov DWORD PTR EndTime, eax
mov DWORD PTR EndTime+4, eax;
}
printf("Time in CPU clocks %I64d", EndTime - StartTime);
denghui0815 2007-12-25
  • 打赏
  • 举报
回复
// 计时函数
__int64 XGetTickCount()
{
__int64 nTick = 0;
#ifdef WIN32
static __int64 nFrequency = 0;
if(nFrequency || QueryPerformanceFrequency((LARGE_INTEGER *)&nFrequency))
{
QueryPerformanceCounter((LARGE_INTEGER *)&nTick);
nTick = nTick * 1000000 / nFrequency;
}
#else
struct timeval tmVal;
struct timezone tmZone;
gettimeofday( &tmVal, &tmZone );
nTick = (__int64)tmVal.tv_sec * 1000000 + tmVal.tv_usec;
#endif
return nTick;
}
wuganhao 2007-12-25
  • 打赏
  • 举报
回复
I think tick_count has nothing to do with thread safty, but only a high performance counter.

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧