准确测量执行时间,以秒为单位

时间:2012-04-25 12:35:27

标签: c time

我想知道程序的执行时间,但我也想排除文件输入/输出所需的时间。为此,我使用了time()函数。有许多.h.cpp个文件,但这里是唯一引用时间对象的地方。

我的问题是,当start的值在开头正确设置时,它会在第一次调用dosomethingelse()时丢失它(设置为零)。这使得sub_duration具有非常大的价值,因为现在endstart之间的差异为零,是end的值。

以下是我如何使用它:

的main.cpp

time_t start=0;
time_t end=0;
time_t sub_duration=0;
time_t total_duration=0; 

int main()
{
    start = time(NULL);
    while(somethingtodo)
    {
        dosomething();
        dosomethingelse();
    }
    end = time(NULL);
    sub_duration = difftime(end,start);
    total_duration += sub_duration;
}

dosth.h

   extern      time_t start;
   extern      time_t end;
   extern      time_t sub_duration;
   extern      time_t total_duration;
   dosomethingelse();

dosth.cpp

#include"dosth.h"    
dosomethingelse()
{
    if(somecondition)
    {
        end = time(NULL);
        sub_duration = difftime(end,start);
        total_duration += sub_duration;
        writesomethingTofile();
        start = time(NULL);
    }
}

2 个答案:

答案 0 :(得分:0)

问题是startend是全局的...当您在dosomethingelse()内设置它们时,您将为整个程序重新设置start

解决方案是将本地计时器保留在dosomethingelse()内,并从总计中减去该功能所花费的时间。

答案 1 :(得分:0)

«start»更改为«main»和«dosomethingelse»功能。  你为什么这样做?