标题:Linux下取得精确的时间,精确到10^(-6)秒 出处:Felix021 时间:Fri, 22 Aug 2008 02:39:47 +0000 作者:felix021 地址:https://www.felix021.com/blog/read.php?1103 内容: 因为需要测试算法的效率,所以专门找了一下在Linux下C/C++如何取得精确的时间来进行判断。 有两个办法, 1. 调用系统命令data +%s.%N,可以取得当前的Unix时间戳,格式为 秒数.毫秒数 FILE *pipe = popen("data +%s.%N", "r"); fscanf(pipe, "%d.%d", &s, &ns); 这样就取得了精确的时间。 2. 使用gettimeofday()函数 struct timeval { long tv_sec, tv_usec; }; //这个结构体保存秒数和毫秒数(0~1000000) int gettimeofday(struct timeval *tv,struct timezone *tz); //调用时tz一般用NULL代替 下面对第二种方法给出样例程序:Linux下测试程序运行时间的一个类 #include #include using namespace std; struct timer{ public: struct timeval begin, end; timer(){ gettimeofday(&begin, NULL); } void start(){ gettimeofday(&begin, NULL); } void finish(){ gettimeofday(&end, NULL); } friend inline ostream & operator<<(ostream &os, timer &a){ double use = 1000000 * (a.end.tv_sec - a.begin.tv_sec) + a.end.tv_usec - a.begin.tv_usec; use /= 1000000.0; os << use; return os; } }; int main(){ timer timer1; timer1.start(); for(int i = 0; i < 100000000; i++); timer1.finish(); cout << timer1; return 0; } Generated by Bo-blog 2.1.0