最近我正在尝试测量 cpu 缩放的效果。如果我用这个时钟来测量它是否准确?
template<std::intmax_t clock_freq>
struct rdtsc_clock {
typedef unsigned long long rep;
typedef std::ratio<1, clock_freq> period;
typedef std::chrono::duration<rep, period> duration;
typedef std::chrono::time_point<rdtsc_clock> time_point;
static const bool is_steady = true;
static time_point now() noexcept
{
unsigned lo, hi;
asm volatile("rdtsc" : "=a" (lo), "=d" (hi));
return time_point(duration(static_cast<rep>(hi) << 32 | lo));
}
};
更新:
根据我另一个post的评论,我相信 redtsc 不能用于测量 cpu 频率缩放的效果,因为 redtsc 的计数器不受 CPU 频率的影响,对吗?
最佳答案
来 self 另一个post中的评论,简而言之,redtsc 不能用于衡量 cpu 频率缩放的效果,因为 redtsc 的计数器不受 CPU 频率的影响。
关于c++ - 测量 CPU 频率缩放效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19719317/