- 浏览: 70993 次
- 性别:
- 来自: 杭州
最新评论
在windows下计算一段程序的执行时间,有以下方法:
(1):使用clock()函数(需包含头文件time.h)
我的c程序代码如下:
在我电脑上(速龙3000+,32位winxp)用mingw编译,输出结果为:
CLOCKS_PER_SEC is 1000
The total time is 9.75000
clock()函数返回时钟所走过的滴答数,其精度只能到毫秒(千分之一秒)。
(2)使用QueryPerformanceFrequency和QueryPerformanceCounter 函数(需包含头文件winbase.h)
我的c程序代码如下:
在我电脑上(速龙3000+,32位winxp)用mingw编译,输出结果为:
Performance frequency is 3579545.000000
The total time is 9.832611687
这段代码写的很粗糙,没有考虑返回错误的情况。虽然我用mingw编译,但是用其他的工具(VisualStudio等)应该也没有问题的,这两个函数是属于windows函数,windows 2000 pro以后的操作系统应该都能使用此程序
另外,需要指出的是,windows下的QueryPerformanceCounter和QueryPerformanceFrequency统计时间的方法使用了一个被称为Time Stamp Counter的寄存器(从奔腾cpu时起即开始有该寄存器),可以直接用嵌入式汇编(或者有些IDE已经直接提供了对应的函数)读取该寄存器的值,然后计算程序执行时间。
我的这两个程序的Makefile代码如下:
至于在Linux下统计程序的执行时间,可以使用gettimeofday()(参见《数据结构与算法分析-C语言描述》习题2.6,它能实现微妙级(百万分之一秒)的准确度)或者clock_gettime()(可实现纳秒级(十亿分之一秒)的准确度)
(1):使用clock()函数(需包含头文件time.h)
我的c程序代码如下:
/* computer execution time using clock() */ /* the prototype : clock_t clock(void); */ /* document url: msdn.microsoft.com/en-us/library/4e2ess30(VS.71).aspx */ #include <stdio.h> #include <time.h> #define LOOPNUM 35000 int Func(int n) { int i,j; double result=0; for(i = 0; i < n; i++) for(j = 0; j < n; j++) result += i*j; return 0; } double MeasureTime(int (*f)(int),int n) { clock_t start,end; double TotTime; start = clock(); (*f)(n); end = clock(); TotTime = (double)(end-start)/CLOCKS_PER_SEC; printf("CLOCKS_PER_SEC is %d\n",CLOCKS_PER_SEC); printf("The total time is %.5f\n",TotTime); return TotTime; } int main(void) { MeasureTime(Func,LOOPNUM); return 0; }
在我电脑上(速龙3000+,32位winxp)用mingw编译,输出结果为:
CLOCKS_PER_SEC is 1000
The total time is 9.75000
clock()函数返回时钟所走过的滴答数,其精度只能到毫秒(千分之一秒)。
(2)使用QueryPerformanceFrequency和QueryPerformanceCounter 函数(需包含头文件winbase.h)
我的c程序代码如下:
/* computer execution time using QueryPerformanceCounter() * and QueryPerformance Frequency() * head file need to be included <winbase.h> * function prototype: * http://msdn.microsoft.com/en-us/library/ms644904(v=VS.85).aspx *BOOL WINAPI QueryPerformanceCounter(__out LARGE_INTEGER *lpPerformanceCount); *BOOL WINAPI QueryPerformanceFrequency(__out LARGE_INTEFER *lpFrequency); */ /* LARGE_INTEGER definition(in winnt.h>: typedef union _LARGE_INTEFER{ struct{ DWORD LowPart; LONG HighPart; } struct{ DWORD LowPart; LONG HighPart; }u; LONGLONG QuadPart; }LARGE_INTEFER,*PLARGE_INTEGER; */ #include <stdio.h> #include <time.h> #include <windows.h> #include <winbase.h> /* #include <winnt.h>*/ #define LOOPNUM 35000 int Func(int n) { int i,j; double result=0; for(i = 0; i < n; i++) for(j = 0; j < n; j++) result += i*j; return 0; } double MeasureTime(int (*f)(int),int n) { LONGLONG start,end; LARGE_INTEGER largeint; double TotTime,freq; QueryPerformanceFrequency(&largeint); freq = (double)largeint.QuadPart; QueryPerformanceCounter(&largeint); start = largeint.QuadPart; (*f)(n); QueryPerformanceCounter(&largeint); end = largeint.QuadPart; TotTime = (double)(end-start)/freq; printf("Performance frequency is %f\n",freq); printf("The total time is %.9F\n",TotTime); return TotTime; } int main(void) { MeasureTime(Func,LOOPNUM); return 0; }
在我电脑上(速龙3000+,32位winxp)用mingw编译,输出结果为:
Performance frequency is 3579545.000000
The total time is 9.832611687
这段代码写的很粗糙,没有考虑返回错误的情况。虽然我用mingw编译,但是用其他的工具(VisualStudio等)应该也没有问题的,这两个函数是属于windows函数,windows 2000 pro以后的操作系统应该都能使用此程序
另外,需要指出的是,windows下的QueryPerformanceCounter和QueryPerformanceFrequency统计时间的方法使用了一个被称为Time Stamp Counter的寄存器(从奔腾cpu时起即开始有该寄存器),可以直接用嵌入式汇编(或者有些IDE已经直接提供了对应的函数)读取该寄存器的值,然后计算程序执行时间。
我的这两个程序的Makefile代码如下:
CC=gcc CFLAGS=-Wall -ansi -o LDFLAGS=-lm all:clock counter clock:clock.c $(CC) $(CFLAGS) $@ $< counter:counter.c $(CC) $(CFLAGS) $@ $<
至于在Linux下统计程序的执行时间,可以使用gettimeofday()(参见《数据结构与算法分析-C语言描述》习题2.6,它能实现微妙级(百万分之一秒)的准确度)或者clock_gettime()(可实现纳秒级(十亿分之一秒)的准确度)
发表评论
-
最小c编译器
2011-11-08 14:09 1434最小c编译器(来源 (最好在linux下操作))代码有好几个 ... -
the development of c language(转)
2011-11-08 09:25 1125c语言之父Dennis Ritchie 写的关于c语言开发历 ... -
C语言,你真的弄懂了么?
2011-11-07 12:42 1736程序(来源 ): #include <stdi ... -
pe文件格式实例解析
2011-11-07 10:05 0环境:windows xp 速龙3000+(即x86兼容32位 ... -
小型elf "Hello,World"程序
2011-11-06 23:59 1335参考链接:http://timelessname.com/el ... -
elf文件格式实例解析
2011-11-05 23:00 6292试验环境:archlinux 速龙3000+(即x86兼 ... -
高质量的c源代码
2011-11-03 10:18 1107现在自由软件及开源软件越来越流行,有大量的附带源程序 ... -
fltk 库
2011-09-26 19:47 1784fltk是一个小型、开源、支持OpenGL 、跨平台(win ... -
《Introduction to Computing Systems: From bits and gates to C and beyond》
2011-09-25 23:33 2131很好的一本计算机的入门书,被很多学校采纳作为教材,作者Yale ... -
csapp bufbomb实验
2011-09-16 14:21 4569csapp (《深入理解计算机系统》)一书中有一个关于缓冲区 ... -
the blocks problem(uva 101 or poj 1208)
2011-09-11 20:57 1808题目描述见:uva 101 or poj 1208 ... -
the blocks problem(uva 101 or poj 1208)
2011-09-11 20:56 0题目描述见:uva 101 or poj 1208 ... -
部分排序算法c语言实现
2011-09-02 14:51 999代码比较粗糙,主要是用于对排序算法的理解,因而忽略了边界和容错 ... -
编译器开发相关资源
2011-08-31 08:40 1178开发编译器相关的一些网络资源: how difficu ... -
zoj 1025 Wooden Sticks
2011-07-23 20:25 949题目见:zoj 1025 先对木棒按照长度进行排序,然后再计 ... -
zoj 1088 System Overload
2011-07-23 17:30 1145约瑟夫环 (josephus problem )问题, ... -
zoj 1091 Knight Moves
2011-07-23 09:05 824题目见zoj 1091 使用宽度搜索优先来求解, ... -
zoj 1078 palindrom numbers
2011-07-22 19:31 1128题目见zoj 1078 主要是判断一个整数在基数为2 ... -
zoj 1006 do the untwist
2011-07-22 13:24 910题目见zoj 1006 或poj 1317 简单 ... -
zoj 3488 conic section
2011-07-22 12:23 975题目见zoj 3488 很简单的题目,却没能一次搞定,因 ...
相关推荐
计算程序运行时间.pdf计算程序运行时间.pdf计算程序运行时间.pdf计算程序运行时间.pdf计算程序运行时间.pdf 详细讲解了 计算程序运行时间的方法和源码 很好啊
计算程序运行时间C编程,调用了一个time.h头文件,在执行程序两头设定一个计时器,最后计算差值,就可以了。
二、主要技术本案例主要使用PHP 7中的日期和时间函数microtime()来返回当前的unix时间戳和微秒数,从而来实现计算程序运行时间的功能 三、效果图展示
这是三种较基本的计算程序运行时间的方法,C++源码实现。
C++获取当前时间和计算程序运行时间的方法
计算程序运行时间.cpp
首先我们分析一下原理,要想得到程序运行时间,那么可以在程序最开始运行的时候定义一个变量记下当前时间,然后等我们程序运行完之后再记录一下当前的时间,两者相差就是该程序运行花费的时间了。这里介绍一下 ...
119-1 计算程序运行时间.xlsm
这里总结了C++中的几乎所有时间函数,包括计算程序运行时间的函数,获取当地时间的函数等等.
Qt计算运行时间的例子 Qt计算运行时间 Qt计算程序运行时间 Qt计算程序运行时间的例子 Qt计算运行时间的例子 Qt计算运行时间 Qt计算程序运行时间 Qt计算程序运行时间的例子
希望对大家有用. 计算时间的通用方法是 : 运行结束系统时间-运行前系统时间
51系列单片机延时程序运行时间的计算,关于单片机延时程序
labview的vi程序,可以计算某个vi程序的运行时间,以秒钟为单位,简单实用。
本文实例讲述了Python计算程序运行时间的方法。分享给大家供大家参考。具体实现方法如下: 复制代码 代码如下: import time def start_sleep(): time.sleep(3) if __name__ == ‘__main__’: #The start time ...
计算Linux下程序的运行时间,是一种比较通用的方法来计算的。
分享一个php计算页面执行时间的类,需要和喜欢的朋友们可以下载参考。
vb.net程序实例 利用CPU时钟脉冲周期测试某段代码运行的精确时间,对程序进行优化时有一个时间参照。
PHP实现计算程序运行的时间 一、 开发环境 ... 2、文本编辑器:Sublime 3。...本案例主要使用PHP 7中的日期和时间函数microtime()来返回当前的unix时间戳和微秒数,从而来实现计算程序运行时间的功能。
在我刚刚接触.Net时,也曾经想要测试一下自己写的程序的运行时间,当时我使用的是将两个DateTime.Now相减的笨方法,呵呵。后来知道使用Environment.TickCount,对于一般的测试来说就足够了。但是它对于高精度测试就...
运行速度计算程序采用VB编写,能够计算各种复杂线形的运行速度,依据为《公路项目安全性评价指南》。免费软件,无任何功能和时间上的限制。 运行速度计算程序是一款用于计算汽车运行速度的冬季,能够计算各种复杂...