博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
精确记算程序的运行时间或者某段代码的运行时间
阅读量:5877 次
发布时间:2019-06-19

本文共 1560 字,大约阅读时间需要 5 分钟。

程序的运行效率很重要,为了明确到底是那一块代码浪费时间,浪费多少时间,检测一下是很有必要的,用下面的方法可以精确地统计时间。第一种精确到,第二种精确到毫秒,第三种精确到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对本博客文章(除转载的)享有版权,未经许可不得用于商业用途。转载请注明出处

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


本文转自ma6174博客园博客,原文链接:http://www.cnblogs.com/ma6174/archive/2012/01/03/2310996.html
,如需转载请自行联系原作者
你可能感兴趣的文章
PowerShell天天学——01
查看>>
Linux下DNS实战篇之主从同步
查看>>
centos7 安装之后 TAB无法自动补全 !?
查看>>
MFC标签页--对话框
查看>>
我的友情链接
查看>>
mysql主从+keepalived高可用
查看>>
11g rac ORA-01157问题处理
查看>>
国内code平台托管开源站点
查看>>
U盘的常见物理故障类型和故障表现汇总
查看>>
生产线上的nginx如何添加未编译安装模块
查看>>
面向过程与函数式编程区别的浅显理解
查看>>
你人生中的那口井挖了没有?
查看>>
“节”后余生蛇年的加班开始了
查看>>
web 客户端 移动设备 各种调试工具
查看>>
我的友情链接
查看>>
ubuntu修改IP地址和网关的方法
查看>>
mian(int argc,char *argv[])及getopt()函数
查看>>
CDN是什么作用在哪里?
查看>>
mysql数据库复制延迟参考
查看>>
我的友情链接
查看>>