博客转载自:https://blog.csdn.net/lg1259156776/article/details/52325508
一、标准C和C++都可用
1. 获取时间用time_t time( time_t * timer ),计算时间差使用double difftime( time_t timer1, time_t timer0 )。 精确到秒
#include
#include
int main()
{
time_t start ,end ;
double cost;
time(&start);
sleep(1);
time(&end);
cost=difftime(end,start);
printf("%f/n",cost);
return 0;
}
关于代码中的sleep函数,需要注意的是:
1)在windows下,为Sleep函数,且包含windows.h
2)关于sleep中的数,在Windows和Linux下1000代表的含义并不相同,Windows下的表示1000毫秒,也就是1秒钟;Linux下表示1000秒,Linux下使用毫秒级别的函数可以使用usleep。
2、clock_t clock(),clock函数获取的是计算机启动后的时间间隔,得到的是CPU时间,精确到1/CLOCKS_PER_SEC秒。
#include
#include
int main()
{
double start,end,cost;
start=clock();
sleep(1);
end=clock();
cost=end-start;
printf("%f/n",cost);
return 0;
}
注意与CPU振荡周期有关,所以不同CPU精度可能不一样。
3. 利用QTime,其精度为ms级
#include
#include
QTime time;
time.start();
function();
qDebug()<<time.elapsed()/1000.0<<"s";
4. Linux利用clock(),其精度为ms级
#include
#include
double time_Start = (double)clock();
function();
double time_End = (double)clock();
qDebug()<<(time_End - time_Start)/1000.0<<"s";
3. 利用windows.h函数,提精度为us级
#include
#include
LARGE_INTEGER litmp;
LONGLONG Qpart1,Qpart2,Useingtime;
double dfMinus,dfFreq,dfTime;
//获得CPU计时器的时钟频率
QueryPerformanceFrequency(&litmp);//取得高精度运行计数器的频率f,单位是每秒多少次(n/s),
dfFreq = (double)litmp.QuadPart;
QueryPerformanceCounter(&litmp);//取得高精度运行计数器的数值
Qpart1 = litmp.QuadPart; //开始计时
function(); //待测试的计算函数等
QueryPerformanceCounter(&litmp);//取得高精度运行计数器的数值
Qpart2 = litmp.QuadPart; //终止计时
dfMinus = (double)(Qpart2 - Qpart1);//计算计数器值
dfTime = dfMinus / dfFreq;//获得对应时间,单位为秒,可以乘1000000精确到微秒级(us)
Useingtime = dfTime*1000000;
qDebug()<<dfTime<<"s";
4. 利用gettimeofday(),其精度为us级
#include
#include
struct timeval tpstart,tpend;
float timeuse;
gettimeofday(&tpstart,NULL);
function();
gettimeofday(&tpend,NULL);
timeuse=(1000000*(tpend.tv_sec-tpstart.tv_sec) + tpend.tv_usec-tpstart.tv_usec)/1000000.0;
qDebug()<<timeuse<<"s";
手机扫一扫
移动阅读更方便
你可能感兴趣的文章