我想知道程序的执行时间,但我也想排除文件输入/输出所需的时间。为此,我使用了time()
函数。有许多.h
和.cpp
个文件,但这里是唯一引用时间对象的地方。
我的问题是,当start的值在开头正确设置时,它会在第一次调用dosomethingelse()
时丢失它(设置为零)。这使得sub_duration
具有非常大的价值,因为现在end
和start
之间的差异为零,是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);
}
}
答案 0 :(得分:0)
问题是start
和end
是全局的...当您在dosomethingelse()
内设置它们时,您将为整个程序重新设置start
解决方案是将本地计时器保留在dosomethingelse()
内,并从总计中减去该功能所花费的时间。
答案 1 :(得分:0)
«start»更改为«main»和«dosomethingelse»功能。 你为什么这样做?