关于标准c++ 利用clock()函数计算时间为负值原因及解决
来源:互联网 发布:python简历模板 编辑:程序博客网 时间:2024/05/16 05:32
由于没有在windows的环境下,所以在计算程序运行时间时不能利用GetTickCount()函数,在标准c++下计算时间的资料在网上也出现许多,比较详细的我可以推荐yunyin86的《linux 计算程序运行时间》一文,讲的很详细。于是我用了clock()函数来计算时间,由于程序比较大,运行的时间比较长,但每次运行完这后得到的结果都是负数,有些不解,查些资料后才明白了,原来clock_t是long型,其取值范围是-2147483648~2147483648,利用clock()函数取得的时间最大值为2147483648 / 1000000 = 2147.483647s,大约为35.79分钟,也就是说利用clock()函数只能记录的运行时间不超过这么多的程序,如果程序运行时间过长,数据就会逸出。要想计算更长的时间需要用gettimeofday()函数,些函数在sys/time.h头文件中,使用时要引用这个头文件,而不是time.h的头文件。
关于gettimeofday()的使用,我就不多讲了,它的功能是查询系统时钟,以确定当前的日期和时间
原型为:
struct timeval{ long tv_sec;//秒域 long tv_usec;//微秒域}
int getimeofday(struct timeval* tv,NULL);计算时间可以精确到微秒,而且得到的时间最大值为2147483648 + 2147483648/1000000 = 2147485794.483647 s,大约为68.096年。这么长的时间计算一般的大程序也应该够了吧。
关于函数的使用代码给出:
#include <sys/time.h>#include <iostream>int main(int argc,char* argv[]){ //记录时间 struct timeval start,finish; gettimeofday(&start,NULL); double totaltime = 0.0; ...//你要运行的代码 gettimeofday(&finish,NULL); Totaltime = finish.tv_sec - start.tv_sec + (finish.tv_usec - start.tv_usec) / 1000000.0; std::cout<<"程序运行时间为:"<<Totaltime<<std::endl; return 0; }
希望有所帮助。
- 关于标准c++ 利用clock()函数计算时间为负值原因及解决
- 利用clock()函数计算一段代码运行消耗的时间(C语言)
- 计算程序运行时间 C语言 clock()函数
- C/C++中关于时间的函数 clock()
- 计算程序运行时间的函数clock()
- 关于clock()函数统计代码运行时间
- 关于clock()计算进程运行的时间以及time()
- 关于clock()计算进程运行的时间以及time()
- 计算程序运行时间的函数Sleep,clock,GetTickCount,QueryPerformanceCounter
- c语言计算时间方法---clock-GetTickCount-QueryPerformanceCounter
- c: stringtoken_s分词函数 ,strftime时间函数,clock计时函数
- C语言时间差计算函数clock() 与 time ()用法分析
- C标准库时间函数
- c语言中统计程序运行时间用clock函数
- C语言中的一些时间函数(time/sleep/clock)
- C++:标准C函数(随机数,时间函数)
- 关于clock()函数计时
- 关于clock()函数计时
- CI框架创建后台管理文件夹
- 黑马程序员--匿名内部类
- Java 内省技术(Introspector)
- [OpenStack] 虚拟化原理
- swt 绘图坐标上下翻转
- 关于标准c++ 利用clock()函数计算时间为负值原因及解决
- 高位数加法(改进)
- 一些自己收藏的有用的资料
- phonegag的CordovaPlugin返回数据给js的回调方法
- 部分Android开发面试题
- 8种排序之间的关系
- [转]聚类算法实践(2)——谱聚类、Chameleon聚类
- 【记录】system v ipc(1) 共享内存
- 线性代数:子空间投影