如何使用sys / times.h查找C ++中已经过了多长时间

时间:2011-04-29 21:08:12

标签: c++ timer

我想做以下事情:

get t1
run a program
get t2
display t2 - t1

基本上我试图找出程序使用了多少时间。我已经看到了几个解决方案,但我喜欢的是使用sys/times.h的那个,但还没有完全弄明白。怎么办呢?

4 个答案:

答案 0 :(得分:2)

struct timeval timeStart,timeEnd;
int error1=gettimeofday(&timeStart, NULL);
//stuff you want to measure goes here
int error2=gettimeofday(&timeEnd, NULL);
if(error1 || error2) return -1; //some error occured

//this gives the result in microseconds.
return (timeEnd.tv_sec - timeStart.tv_sec)*1000000.0+(timeEnd.tv_usec - timeStart.tv_usec); 

答案 1 :(得分:1)

您也可以使用,这是跨平台的(我不知道这对您来说是否重要)。 这很简单:你可以使用clock()函数,它返回一个整数。有一个名为CLOCKS_PER_SEC的宏,可以告诉您当前机器中1秒钟内将有多少个时钟脉冲。在C代码中,那将是:

#include <time.h>

unsigned old_clock = clock();
unsigned current_clock = 0;//will be assigned later
//do anything you want to time
current_clock = clock();
printf("%d seconds (%d milliseconds) ellapsed.\n", (current_clock - old_clock) / CLOCKS_PER_SEC, (current_clock - old_clock) / (CLOCKS_PER_SEC / 1000) );

答案 2 :(得分:0)

如果您正在使用Windows,请查看QueryPerformanceCounter和QueryPerformanceFrequency。包含windows.h后它们可用。

答案 3 :(得分:0)

尝试一下。

#include <iostream>
#include <sys/times.h>
int main()
{
    time_t clkTimeBegin, clkTimeEnd;
    time(&clkTimeBegin);
    std::cout<<"Run your program here"<<std::endl;
    time(&clkTimeEnd);
    std::cout << "Time diff, " << difftime(clkTimeBegin, clkTimeEnd ) << "!\n"; 
}