【发布时间】:2013-02-16 12:48:02
【问题描述】:
我刚开始使用 C++,有时我不知道我的编译器会多么喜欢算法的两种不同实现。 有没有一个简单的工具可以用来查看我的代码执行需要多长时间?
编辑:我使用 gcc 编译器
【问题讨论】:
-
使用高精度计时器为您的代码执行 1000 次算法计时。
我刚开始使用 C++,有时我不知道我的编译器会多么喜欢算法的两种不同实现。 有没有一个简单的工具可以用来查看我的代码执行需要多长时间?
编辑:我使用 gcc 编译器
【问题讨论】:
【讨论】:
如果你想测量整个程序运行的时间,那么 Code-Blocks/Visual Studio 应该 告诉你程序何时关闭。它应该在底部的日志中。
如果您想测量特定行或函数需要多长时间,我建议您研究一下
clock() 或 QueryPerformanceFrequency() 以及如何使用它们。
clock() 函数很慢,但更易于使用。一个例子:
float start_time = clock()/CLOCKS_PER_SEC;
func();
float end_time = clock()/CLOCKS_PER_SEC;
float dtime = start_time - end_time;
【讨论】:
clock 在 Windows 上的作用与在 Unix(Linux、MacOS 等)上的作用不同。如果您的代码只是普通代码,这没什么区别,但如果您执行 I/O 或以其他方式导致系统运行其他东西,在 Windows 中,clock 给出代码运行的总时间,而在 Unix 中它给出 CPU - 程序消耗的时间 - 所以执行 10 秒文件 I/0 的操作可能会显示为 0.02s,因为这实际上是 CPU 时间的多少,但它需要 10 秒“实时”。
Smart Bear 的 AQtime 我有很好的体验,它不是免费的,但你可以免费试用。它可以很好地集成到 Embarcardero 的 Visual C++ 和 RAD Studio 中。
http://smartbear.com/products/qa-tools/application-performance-profiling
数据在 IDE 中很容易访问,尤其是在行号旁边的 gutter 部分中的命中数和花费的时间数字很有用。
【讨论】: