- 浏览: 73017 次
- 性别:
- 来自: 杭州
最新评论
在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 1491最小c编译器(来源 (最好在linux下操作))代码有好几个 ... -
the development of c language(转)
2011-11-08 09:25 1318c语言之父Dennis Ritchie 写的关于c语言开发历 ... -
C语言,你真的弄懂了么?
2011-11-07 12:42 1774程序(来源 ): #include <stdi ... -
pe文件格式实例解析
2011-11-07 10:05 0环境:windows xp 速龙3000+(即x86兼容32位 ... -
小型elf "Hello,World"程序
2011-11-06 23:59 1379参考链接:http://timelessname.com/el ... -
elf文件格式实例解析
2011-11-05 23:00 6364试验环境:archlinux 速龙3000+(即x86兼 ... -
高质量的c源代码
2011-11-03 10:18 1169现在自由软件及开源软件越来越流行,有大量的附带源程序 ... -
fltk 库
2011-09-26 19:47 1847fltk是一个小型、开源、支持OpenGL 、跨平台(win ... -
《Introduction to Computing Systems: From bits and gates to C and beyond》
2011-09-25 23:33 2189很好的一本计算机的入门书,被很多学校采纳作为教材,作者Yale ... -
csapp bufbomb实验
2011-09-16 14:21 4632csapp (《深入理解计算机系统》)一书中有一个关于缓冲区 ... -
the blocks problem(uva 101 or poj 1208)
2011-09-11 20:57 1841题目描述见: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 1024代码比较粗糙,主要是用于对排序算法的理解,因而忽略了边界和容错 ... -
编译器开发相关资源
2011-08-31 08:40 1215开发编译器相关的一些网络资源: how difficu ... -
zoj 1025 Wooden Sticks
2011-07-23 20:25 972题目见:zoj 1025 先对木棒按照长度进行排序,然后再计 ... -
zoj 1088 System Overload
2011-07-23 17:30 1177约瑟夫环 (josephus problem )问题, ... -
zoj 1091 Knight Moves
2011-07-23 09:05 853题目见zoj 1091 使用宽度搜索优先来求解, ... -
zoj 1078 palindrom numbers
2011-07-22 19:31 1152题目见zoj 1078 主要是判断一个整数在基数为2 ... -
zoj 1006 do the untwist
2011-07-22 13:24 944题目见zoj 1006 或poj 1317 简单 ... -
zoj 3488 conic section
2011-07-22 12:23 1015题目见zoj 3488 很简单的题目,却没能一次搞定,因 ...
相关推荐
总结来说,通过PHP的`microtime()`函数,我们可以方便地计算程序的运行时间,这对于优化代码性能和理解程序执行效率至关重要。在实际开发中,这种能力可以帮助我们定位和解决性能瓶颈,提高整体代码质量。
以下是一个简单的例子,用于计算程序执行时间: ```php // 获取程序开始时间 $starttime = microtime(true); // 代码执行区域,例如一个循环 for ($i = 0; $i ; $i++) { // 无需执行任何操作,只是为了模拟程序...
### C++中计算程序运行时间的三种方式 在C++编程中,经常需要评估或比较算法的效率,其中一种常用的方式就是测量程序或特定代码段的执行时间。本文将详细介绍三种常用的计算程序运行时间的方法,并给出相应的源码...
为了计算程序运行时间,我们通常在程序启动时记录一次系统时间,然后在需要检查运行时间的地方再次获取系统时间并进行差值计算。 例如,以下是一个简单的易语言代码片段,演示了如何获取并显示程序运行时间: ```...
### 计算程序运行时间C编程 在C语言编程中,有时我们需要测量程序或特定代码段的执行时间,这对于性能优化、算法效率分析等方面尤为重要。本文将详细介绍如何使用C语言来计算程序运行时间,并通过一个具体的示例...
计算程序运行时间的步骤如下: ```c #include int main() { LARGE_INTEGER start_time, end_time, freq; QueryPerformanceCounter(&start_time); // 程序代码 QueryPerformanceCounter(&end_time); ...
### C++ 获取当前时间和计算程序运行时间的方法 在C++编程中,经常需要获取当前时间或者测量程序的执行时间。这些需求在各种场景下都非常常见,例如:性能测试、调试、记录日志等。本文将详细介绍如何在C++中实现这...
### 计算程序运行时间的方法与实践 在计算机科学领域,评估程序的性能是一个非常重要的环节,其中最为直观且常用的方式之一就是计算程序的运行时间。对于开发者而言,理解并掌握如何有效地测量程序运行时间至关重要...
计算程序运行时间.cpp
本文将深入探讨C++中的时间函数集,主要包括用于计算程序运行时间的函数以及获取当前时间的函数。 1. **时间类型和对象** - `time_t`: 这是一个基本的时间类型,通常用于存储从纪元(通常是1970年1月1日00:00:00 ...
在编程领域,了解和计算程序运行时间是优化代码性能的关键步骤。本文将深入探讨在C++环境下,如何通过多种方法来测量程序运行时间,以帮助开发者优化程序效率。以下是一些核心知识点: 1. **高精度计时器**: C++...
同时,掌握如何计算程序运行时间也是优化代码效率的关键技能之一。下面将详细介绍这些知识点。 1. STL库文档: STL是C++中的一个重要组成部分,提供了高效的数据结构(如vector、list、set、map等)和算法(如排序...
labview的vi程序,可以计算某个vi程序的运行时间,以秒钟为单位,简单实用。
在51系列单片机中,使用汇编语言编写延时程序时,其运行时间的计算依赖于指令执行时间、循环次数以及单片机的晶振频率。通常,若晶振频率为12MHz,则一个机器周期(T)的时间为1μs。延时程序的运行时间(t)可由...
119-1 计算程序运行时间.xlsm
值得注意的是,虽然这个类提供了一个方便的方式来测量PHP脚本的执行时间,但它只反映了PHP本身的部分运行时间,并不包括数据库查询、文件I/O或其他外部服务调用的时间。要得到更全面的性能分析,你可能还需要结合...
本文将详细介绍如何利用`gettimeofday()`函数来计算程序在Linux下的运行时间。 #### 1. `gettimeofday()`函数简介 `gettimeofday()`函数用于获取当前的时间戳,返回的是一个`struct timeval`类型的结构体,该...
在C语言中,计算程序执行时间是一项常见的任务,特别是在性能测试和优化中。要实现这一功能,我们需要利用C标准库中的特定函数。标题"计算c程序执行时间代码"表明我们将探讨如何通过C语言来获取一个程序运行的时间。...
本文实例讲述了Python计算程序运行时间的方法。分享给大家供大家参考。具体实现方法如下: 复制代码 代码如下: import time def start_sleep(): time.sleep(3) if __name__ == ‘__main__’: #The start time ...
标题中的"软件运行时间计算(实例)"就是针对这个需求的一个实际应用。通过使用CPU时钟脉冲周期,我们可以获得非常精确的时间测量结果,这对于了解程序的运行效率,特别是对于那些对性能要求极高的应用来说,是非常...