我想做以下事情:
get t1
run a program
get t2
display t2 - t1
基本上我试图找出程序使用了多少时间。我已经看到了几个解决方案,但我喜欢的是使用sys/times.h
的那个,但还没有完全弄明白。怎么办呢?
答案 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";
}