gpt4 book ai didi

c++ - 知道 CPU 是否支持纳秒

转载 作者:行者123 更新时间:2023-12-02 10:04:45 27 4
gpt4 key购买 nike

我正在尝试在 Visual Studio 中使用 C++ 以纳秒为单位计算耗时。我做了一些测试,结果总是以 00 结尾。这是否意味着我的处理器(Ryzen 7-1800X)不支持 ~1 纳秒的分辨率,但只支持 ~100ns?我可以以某种方式启用它吗?

auto start = std::chrono::high_resolution_clock::now();    
for (int i = 0; i < 10; i++) {
//stuff
auto elapsed = std::chrono::high_resolution_clock::now() - start;
long long nanoseconds = std::chrono::duration_cast<std::chrono::nanoseconds>(elapsed).count();
std::cout << "\n" << nanoseconds << "\n";
}

最佳答案

在 MSVC 2015+ std::chrono::high_resolution_clock基于 QueryPerformanceCounter ,其分辨率为 100ns。

在 Windows 上,QueryPerformanceCounter是最快的用户态计时器。
如果您想要更高的分辨率,可以尝试返回 CPU 周期计数器的 RDTSC 指令 ( __rdtsc )。但它是 very tricky one正确使用,不建议使用。

在 Windows 上,您似乎几乎坚持 100ns 的分辨率。请记住,在 Windows 世界中,100ns 是一个非常短的时间 - 它大约等于 300 条指令。只需调用 QueryPerformanceCounter已经需要大约 1000 条指令。

关于c++ - 知道 CPU 是否支持纳秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60811968/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com