我需要在c ++中使用某种方法来跟踪自程序执行以来的毫秒数.我需要精确度以毫秒为单位.(在我的谷歌搜索中,我发现许多人说要包含time.h然后将输出乘以time()1000 ......这不起作用.)
clock有人多次提出建议.这有两个问题.首先,它通常没有甚至接近毫秒的分辨率(10-20毫秒可能更常见).其次,它的一些实现(例如,Unix和类似的)返回CPU时间,而其他(例如,Windows)返回挂起时间.
你还没有真正说过你是否想要壁挂时间或CPU时间,这很难给出一个非常好的答案.在Windows上,您可以使用GetProcessTimes.这将直接为您提供内核和用户CPU时间.它还会告诉您创建进程的时间,因此如果您想要创建进程后的毫秒挂壁时间,则可以从当前时间(GetSystemTime)中减去进程创建时间.QueryPerformanceCounter也被提到过.这有一些奇怪之处 - 例如,在某些实现中,它从CPU循环计数器中检索时间,因此当CPU速度发生变化时,其频率会发生变化.其他实现从主板的1.024 MHz定时器读取,该定时器不随CPU速度而变化(并且每个使用的条件并不完全明显).
在Unix上,你可以GetTimeOfDay用来获得相对较高精度的(至少可能性).如果你想要一个过程的时间,你可以使用times或getrusage(后者更新,并提供更完整的信息,也可能更精确).
一句话:正如我在评论中所说,没有办法得到你想要的东西.既然你还没有说过你是想要CPU时间还是壁挂时间,即使对于特定的系统,也没有一个正确的答案.你已经"接受"的clock()那个()具有基本上可用于任何系统的优点,但它返回的内容也是最广泛的.