这里主要是在ubuntu系统中编写c/c++应用, 编译器选择gcc
关于clock()函数
这个函数返回从当前程序开始运行到调用函数所经历的clock tick数量, 需要添加time.h头文件, 需要注意的是这个函数在单进程程序中计算的时间比较准确, 在计算多线程应用每个线程执行时间时, 经过试验, 会对多核心并行始终做累加,致使打印时间被看成程序是串行执行的, 此外应用的sleep函数延时时间不会产生clock tick所以使用该函数计算的程序执行时间也不包含sleep睡眠时间.
在使用这个函数的使用要配合宏CLOCKS_PER_SEC使用, 示例如下
#include <time.h>
clock_t start =0, finish = 0;
start = clock();
...(程序执行代码)
finish = clock();
cout << "total time: " << (double)(finish - start)/CLOCKS_PER_SEC << endl;
关于gettimeofday函数
这个函数记录的是系统时钟, 能够将多线程应用执行时间进行分开计算, 时间精度微妙级,使用时添加sys/time.h, stdlib.h, unistd.h头文件, 函数定义为int gettimeofday(struct timeval *tv, struct timezone *tz);
Ubuntu中C/C++计算程序运行时间:clock()与gettimeofday()函数对比

本文探讨在Ubuntu环境下,使用gcc编译器时,如何通过clock()和gettimeofday()函数来衡量C/C++程序的运行时间。clock()函数在单进程程序中提供准确的计时,但在多线程中可能产生误导,不包括sleep延时。gettimeofday()函数则能精确到微妙级别,适合多线程应用,能分别计算每个线程的执行时间。
最低0.47元/天 解锁文章
1480

被折叠的 条评论
为什么被折叠?



