我曾经用CLOCK_THREAD_CPUTIME_ID
和clock_gettime
衡量不同主题的时间消耗。
但是clock_gettime是POSIX世界的标准,因此在平台交叉时它不会像Windows这样的其他平台。
我检查了C ++ STD,发现steady_clock
,system_clcok
,high_resolution_clock
到目前为止,这些都不能为特定线程计时。
我有没有想念?如果有,那子弹是什么?或者,如果没有,任何建议?
答案 0 :(得分:2)
唯一的"时钟"测量C ++标准中的CPU时间是std::clock,它不能测量Windows中的CPU时间,因此它仍然不可移植,无论如何它是每个进程而不是每个线程。
如果要测量线程CPU时间,则必须使用非便携式平台特定功能。
答案 1 :(得分:1)
您必须抽象出线程计时器的实现,在Windows下您可以使用GetThreadTimes函数。在linux(或非POSIX)下使用CLOCK_THREAD_CPUTIME_ID。但我想如果你在windows下使用mingw进行编译,那么CLOCK_THREAD_CPUTIME_ID将可用。
另外,为了便于携带,请查看提升thread_clock