如何测量程序的运行时间

原创 2013年12月03日 12:00:46

本文介绍几种测量时间的方法。相关知识来自学习《Computer System:A Programmer's Perspective 》一书。:--)

本文主要介绍4种方法,其中前2种通过推荐大家阅读相关的个人觉得写得比较好文章来进行了解
1、直接访问硬件来完成精确计时
2、利用操作系统提供的Timer来计时
3、利用C/C++语言提供的函数来计时

4、利用StatisticalSampling(统计抽样)/Profiling来计时,主要讨论VC Profiler(在企业版中提供,绿色版其他版中没有该功能)

1、对于第一种方法。推荐大家阅读这篇文章来了解:http://www.vckbase.com/index.php/Old/index/id/1301 VC中基于Windows的精确定时

2、利用操作系统提供的Timer计时,推荐大家阅读这篇文章 http://hi.baidu.com/scclobfffxbhitq/item/db74d2ac92230211a8cfb7c6 Windows 获取当前系统时间函数总结

对于第二种,博文中只提供了在windows环境下获取,当然在linux环境下也有

通过系统调用一些函数,比如调用times()精确到秒、gettimeofday()精确到微秒、还可以调用SIGRLAM信号和alarm()函数,但是这种方式不精确

3、利用C/C++提供的clock()函数,C/C++中不仅仅是提供了这一个函数来计时。还有很多比如Time(),Localtime()等等一些函数

time.h头文件中有如下定义了cloct_t数据类型 以及CLOCK_PER_SECOND宏定义

#define CLOCK_PER_SECOND((clock_t)1000)

#ifndef _CLOCK_T_DEFINED

typedef long clock_t;

#define _CLOCK_T_DEFINED

#endif

//实例代码

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
void main(){
clock_t start,finish;
int i=0;
double time;
start=clock();
//执行一个for循环
for(;i<1000;i++)
{
	Sleep(1);
}
finish=clock();
time=(double)((finish-start)/CLOCKS_PER_SEC);
printf("start:%ld\t\tfinish:%ld\tfinish-start:%ld\truntime:%f\n",start,finish,finish-start,time);
}


4、利用VC提供的Profiler工具

1、点击Project——>setting——>Link

勾选Enable Profiliing

确定

如下图所示


2、点击Build——>Profile

勾选Function Profiling

点击确定如下图所示



那么程序运行时间信息就出来了


从其结果看,我们很容易得到程序运行的统计时间

当然Profiler的功能不仅仅就统计一个时间,我们可以通过分析其数据,然后得出程序运行中哪个是瓶颈(耗时最多的函数),根据2/8原理,然后利用相关的优化的方法去优化它。



相关文章推荐

测量程序运行时间的方法

转自: http://www.cppblog.com/qey/articles/66772.html 精确测量某一个程序运行的确切时间是很困难的,所谓的测量运行时间只是做一个近似的测量。 目前...
  • gxuan
  • gxuan
  • 2012年09月15日 17:39
  • 619

WV.25-大数阶乘算法5-程序运行时间的测量

程序运行时间的测量   算法的好坏有好多评价指标,其中一个重要的指标是时间复杂度。如果两个程序完成一个同样的任务,即功能相同,处理的数据相同,那么运行时间较短者为优。操作系统和库函数一般都提供...
  • MIKASA3
  • MIKASA3
  • 2015年01月30日 22:01
  • 540

python - 测量程序运行时间 + 一个对于列表的小实验

在 中,我提到了在函数传递参数为list的时候,list 与list[:]是不同的,并且list[:]看起来比较快,所以我做了一个测量这个传参过程的小实验。 首先说一下用来测量时间得timeit模块(...

程序运行时间的测量

转自:http://blog.csdn.net/wzdworld001/article/details/1644111 程序运行时间的测量   摘要:本文详细的讨论了在windows平台...

使用System.Diagnostics.Stopwatch对程序的运行时间精确地测量

介绍     每个使用System.Diagnostics命名空间下的Stopwatch类做性能优化的人迟早会遇到一些麻烦。每个人都可以看到了,在同一台电脑相同功能的测试在运行时间上会有25% -3...

STM32笔记:使用SysTick测量程序的运行时间

本实验用来测量延时函数(如下)的运行时间 void Delay(__IO u32 nCount)   { for(; nCount != 0; nCount--); }  //SysTick.c #...

使用gprof测量程序运行时间

gprof使用详细介绍 linux下c/c++编程 gprof介绍 gprof是GNU profiler工具。可以显示程序运行的“flat profile”,包括每个函数的调用次数,每个函...

测量程序的运行时间

从这本书中整理而来:Computer Systems ----  A programmer's perspective   first edtion   Chapter 9 要精确测量程...

Linux下测量程序运行时间

在Linux下面测量程序的执行时间。采用一下办法。 #include #include uint64_t getusertime() { struct rusage rusage; ge...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何测量程序的运行时间
举报原因:
原因补充:

(最多只允许输入30个字)