【发布时间】:2014-02-03 16:18:38
【问题描述】:
我想问一下,如何以任何单位计算时间,例如皮秒、飞秒以及更精确的时间。我正在计算函数的运行时间并使用纳秒,当我使用毫秒或纳秒时,函数的运行时间返回 0。我认为 Chrono 库只支持到纳秒,这是我在输入 chrono 后按 ctrl+space 时出现的最精确的::
int main()
{
auto t1 = std::chrono::high_resolution_clock::now();
f();
auto t2 = std::chrono::high_resolution_clock::now();
std::cout << "f() took "
<< std::chrono::duration_cast<std::chrono::milliseconds>(t2 - t1).count()
<< " milliseconds\n";
}
代码来源:http://en.cppreference.com/w/cpp/chrono/duration/duration_cast
谢谢。
【问题讨论】:
-
尝试运行每个函数 1000 次或更多次,然后将结果时间除以 1000。还要注意,Windows 上的最大精度为 1 - 15 毫秒,具体取决于您的 Windows 是否喜欢您
-
@TheOne 如果运行该函数 1000 次需要 10 微秒,即 1 毫秒精度的时钟中的 0.01 毫秒,该怎么办?
-
@TheOne,这不是真的。 Windows 具有精度为 100 纳秒的高分辨率计时器。您必须使用 Windows API 来获取它们,但它们就在那里:msdn.microsoft.com/en-us/library/windows/desktop/…
-
Visual Studio 中的
不仅具有非常差的高分辨率时钟,而且还破坏了持续时间混合算术(这种完全不工作,因此显然从未测试过;由于某种原因,这些东西的成本高达 14,000 美元)。如果您必须使用 Visual Studio,我建议您使用 Boost.Chrono。 -
我必须提交作业,老师的电脑是否也需要安装/设置boost库,因为它是外部库。
标签: c++ visual-c++ c++11