【发布时间】:2020-07-03 19:44:05
【问题描述】:
我正在尝试在 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";
}
【问题讨论】:
-
你能显示一些代码吗?您是否为此使用
std::chrono命名空间? -
你去吧,是的,我正在使用 chrono @JasperKent
-
那么它肯定意味着你的处理器不支持纳秒,所以关于你是否可以启用它实际上是一个处理器问题,而不是一个 C++ 问题。可能值得将处理器添加为问题的标签。
-
如果您使用的是 Windows 的高分辨率计时器,那么 (IIRC) 100 ns 是 that 的粒度 - 它不依赖于 CPU 的类型。
-
好的,谢谢@AdrianMole
标签: c++ windows performance time cpu