精确记算程序的运行时间或者某段代码的运行时间

简介:

程序的运行效率很重要,为了明确到底是那一块代码浪费时间,浪费多少时间,检测一下是很有必要的,用下面的方法可以精确地统计时间。第一种精确到,第二种精确到毫秒,第三种精确到0.000001秒,大家可以根据自己的需求选用。

复制代码
#include<time.h>
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
int main()
{
     // 精确到秒 ==========================================
    time_t t1,t2;
    time(&t1);
     // 此处放置要测试的代码
    Sleep( 1000); // 延时 
    time(&t2);
    printf( " %d %d %d秒\n ",t1,t2,t2-t1);
     // 精确到毫秒 ========================================
    clock_t c1,c2;
    c1=clock();
     // 此处放置要测试的代码
    Sleep( 100); // 延时 
    c2=clock();
    printf( " %d %d %d毫秒\n ",c1,c2,c2-c1);
     // 精确到 0.000001毫秒 ===============================
    LARGE_INTEGER litmp;
    LONGLONG start, end;
     double dft, dff, dfm;
    QueryPerformanceFrequency(&litmp); // 获得时钟频率
    dff = ( double) litmp.QuadPart;
    QueryPerformanceCounter(&litmp); // 获得初始值
    start = litmp.QuadPart; 
     // 此处放置要测试的代码
    Sleep( 1000); // 延时
    QueryPerformanceCounter(&litmp); // 获得终止值
    end = litmp.QuadPart;
    dfm = ( double) (end - start);
    dft = dfm / dff; // 获得对应的时间值,单位秒
    printf( " %lf毫秒\n ",dfm/dff* 1000);
}
复制代码
运行截图

 那是在windows下的,如果在linux环境下,要这样计算时间:

struct timeval tv_start,tv_end;

gettimeofday(&tv_start,NULL);
// 此处放要测试的代码或程序
gettimeofday(&tv_end,NULL);
printf( " 程序运行时间为:%lf秒\n ",tv_end.tv_sec-tv_start.tv_sec+(tv_end.tv_usec-tv_start.tv_usec)/ 1000000.0); 

其中timeval的结构题定义是这样的:

struct timeval {
    time_t      tv_sec;      /*  seconds  */
    suseconds_t tv_usec;     /*  microseconds 微秒=1/10^6秒  */
}; 

tv_sec和tv_usec可以单独输出,根据自己的需求选择精度就可以了


博主ma6174对本博客文章(除转载的)享有版权,未经许可不得用于商业用途。转载请注明出处http://www.cnblogs.com/ma6174/

对文章有啥看法或建议,可以评论或发电子邮件到ma6174@163.com


本文转自ma6174博客园博客,原文链接:http://www.cnblogs.com/ma6174/archive/2012/01/03/2310996.html ,如需转载请自行联系原作者
相关文章
|
3月前
|
C++
C++ 根据程序运行的时间和cpu频率来计算在另外的cpu上运行所花的时间
C++ 根据程序运行的时间和cpu频率来计算在另外的cpu上运行所花的时间
47 0
|
2月前
|
算法 C++
如何精确计算出一个算法的CPU运行时间?
如何精确计算出一个算法的CPU运行时间?
|
Java Maven
如何计算程序运行时间
如何计算程序运行时间
122 0
|
算法 数据可视化
计算代码运行时间的 5 种方法
计算代码运行时间的 5 种方法
712 0
|
Java
这4种方式,统计代码执行耗时,才足够优雅!
这4种方式,统计代码执行耗时,才足够优雅!
336 0
|
移动开发 小程序 Java
这4种统计代码执行耗时,才足够优雅!
今天,跟大家分享一下,如何在代码中,统计接口耗时,最优雅,性能最高,接下来我将介绍4种统计方式,如果你有更好的方式,欢迎文末留言区,交流
831 0
这4种统计代码执行耗时,才足够优雅!
这样统计代码执行耗时,才足够优雅!
代码耗时统计在日常开发中算是一个十分常见的需求,特别是在需要找出代码性能瓶颈时。 可能也是受限于 Java 的语言特性,总觉得代码写起来不够优雅,大量的耗时统计代码,干扰了业务逻辑。特别是开发功能的时候,有个感受就是刚刚开发完代码很清爽优雅,结果加了一大堆辅助代码后,整个代码就变得臃肿了,自己看着都挺难受。因此总想着能不能把这块写的更优雅一点,今天本文就尝试探讨下“代码耗时统计”这一块。
C# 统计程序执行时间
随便写写,小马哥勿怪    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来。    十年河东十年河西,莫欺少年穷。     话说马云年轻的时候也是屌丝一枚,有图为证      现在的马云依然是亚洲首富啊(有图为证),所以嘛,十年河东十年河西,莫欺少年穷。
1840 0
|
算法
算法运行时间
   1  大部分程序的大部分指令之执行一次,或者最多几次。如果一个程序的所有指令都具有这样的性质,我们说这个程序的执行时间是常数。  logN   如果一个程序的运行时间是对数级的,则随着N的增大程序会渐渐慢下来,如果一个程序将一个大的问题分解成一系列更小的问题,每一步都将问题的规 模缩减成几分之一 ,一般就会出现这样的运行时间函数。
1523 0