【发布时间】:2016-03-08 02:14:33
【问题描述】:
我认为衡量我的程序效率的最佳方法是检查它运行所花费的时间,但是当我这样做时,我总是得到随机时间。
我正在使用 Roger Pate 在this 这个线程中显示的以下代码:
#include <ctime>
void func()
{
using namespace std;
clock_t begin = clock();
//Function to measure here
clock_t end = clock();
double elapsed_secs = double(end - begin) / CLOCKS_PER_SEC;
}
我认为这是因为我有一些程序在后台运行。
我不想每次想重新检查我的功能的时间时都重新启动计算机,所以我的问题是:有没有更好的方法来衡量程序的效率?
IDE 是 Codeblocks,OS 是 Win7 64bit。
【问题讨论】:
-
这些可能是:1. 优化相关(可能您测量的代码已被优化掉......在这种情况下结果无效),2. 堆栈内存覆盖(您的结果无效) , 3. 上下文切换 / IO 相关问题(这些是原子操作,锁争用可能会极大地改变性能,因此结果是有效的,但会有所不同)等等...... 请发布一个实际显示的示例代码问题。
-
您看到的典型时间是什么时候?
-
@CaptainGiraffe 很确定它是
CLOCKS_PER_SEC。 -
@Qix 哎呀。也不能编辑。 不要为此使用clock()。并记住正确拼写您的定义。后果可能是可怕的!
-
使用
clock_gettime()和CLOCK_PROCESS_CPUTIME_ID作为第一个参数。这仅返回在当前进程中花费的时间。开始时间调用一次,结束时间再调用一次。阅读手册页了解详细信息
标签: c++ c performance