下面是计算CPU时间的代码,但这是不正确的,因为当我使用gettimeofday时,它给出了正确的ms时间。我正在一个处理器上运行我的进程,它的时钟运行在800 my。我对rdtsc的了解如下:
发布于 2016-04-16 16:18:36
理论上,不能保证rdtsc与CPU周期有很强的关系,例如一个周期可能等于3个rdtsc单元。实际上,在英特尔CPU上,假定存在max_frequency_of_cpu特性,rdtsc单元等于(1秒/ constant_tsc )。所以,第一个问题是:800 max是最大频率还是当前频率?
无论如何,您最可能希望使用的是clock_gettime(CLOCK_MONOTONIC_RAW, ...)。我的理解是,它被精确映射到时间戳计数器,并在操作系统启动时用系统时钟进行校准。
(是的,在我的i7-3635QM上,您的代码就像预期的那样工作)。
https://stackoverflow.com/questions/36663379
复制相似问题