c语言怎么测试一段程序的运行时间?
发布网友
发布时间:2022-04-23 18:08
我来回答
共1个回答
热心网友
时间:2022-04-27 22:24
C/C++中的计时函数是clock(),而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下:
clock_t clock( void );
这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock)。其中clock_t是用来保存时间的数据类型,在time.h文件中,我们可以找到对它的定义:
#ifndef _CLOCK_T_DEFINED
typedef long clock_t;
#define _CLOCK_T_DEFINED
#endif
很明显,clock_t是一个长整形数。在time.h文件中,还定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元,其定义如下:
#define CLOCKS_PER_SEC ((clock_t)1000) //CLOCKS_PER_SEC为系统自定义的
可以看到每过千分之一秒(1毫秒),调用clock()函数返回的值就加1。下面举个例子,你可以使用公式clock()/CLOCKS_PER_SEC来计算一个进程自身的运行时间:
void elapsed_time()
{
printf("Elapsed time:%u secs./n",clock()/CLOCKS_PER_SEC);
}
当然,你也可以用clock函数来计算你的机器运行一个循环或者处理其它事件到底花了多少时间:
#include “stdio.h”
#include “stdlib.h”
#include “time.h”
int main( )
{
long i = 10000000L;
clock_t start, finish;
double Total_time;
/* 测量一个事件持续的时间*/
printf( "Time to do %ld empty loops is ", i );
start = clock();
while( i--) ;
finish = clock();
Total_time = (double)(finish-start) / CLOCKS_PER_SEC;
printf( "%f seconds/n", Total_time);
return 0;
}
在笔者的机器上,运行结果如下:
Time to do 10000000 empty loops is 0.03000 seconds
上面我们看到时钟计时单元的长度为1毫秒,那么计时的精度也为1毫秒,那么我们可不可以通过改变CLOCKS_PER_SEC的定义,通过把它定义的大一些,从而使计时精度更高呢?通过尝试,你会发现这样是不行的。在标准C/C++中,最小的计时单位是一毫秒。
参考资料
c语言测试程序执行时间.csdn博客[引用时间2017-12-31]
c语言怎么测试一段程序的运行时间?
void elapsed_time() { printf("Elapsed time:%u secs./n",clock()/CLOCKS_PER_SEC); } 当然,你也可以用clock函数来计算你的机器运行一个循环或者处理其它事件到底花了多少时间:include “stdio.h” #include “stdlib.h” #include “time.h”int main( ) {long i = 10000000L;clock_t ...
C语言中怎样测试函数执行时间
有4种方法可以达成测算程序运行时间的目的。它们分别是使用clock, times, gettimeofday, getrusage来实现的。下面就来逐一介绍,并比较它们的优劣点。系统测试环境:VirtualBox (Ubuntu 9.10)gcc version 4.4.1 libc6 2.10.1-0ubuntu16 Core Duo T2500 2GMHz 例程如下:只要修改第11行的定义值,就...
求C语言程序:如何获得一个程序运行的时间? 最好带一段简单的代码 新人...
time()函数,获取系统时间,许多依赖于time()计算超时的程序,在修改系统时间后一般都不能正常运行。因此本人推荐:windows下:计算绝对时间QueryPerformanceCount/QueryPerformanceFrequency.cpu脉冲计数/ cpu频率,获得开机以来的秒数。当然,这两个函数获得时间精度是很高的(us级别),只是我们一般用不到这么精确。
C语言求一个程序运行时间
C/C++中的计时函数是clock()。所以,可以用clock函数来计算的运行一个循环、程序或者处理其它事件到底花了多少时间,具体参考代码如下:include “stdio.h”#include “stdlib.h”#include “time.h”int main( void ){ long i = 10000000L; clock_t start, finish; double duration;...
C语言中如何输出显示程序的运行时间? 望赐教!
QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);可以返回硬件支持的高精度计数器的频率。先调用QueryPerformanceFrequency()函数获得机器内部计时器的时钟频率。接着在需要严格计时的事件发生前和发生之后分别调用QueryPerformanceCounter(),利用两次获得的计数之差和时钟频率,就可以计算出事件经历的精确时间...
怎样知道C语言运行一个程序用了多长时间
在程序开始时调用一次time()结束时调用一次time(),两次相减就能获得秒数。例:include include <stdio.h> int main(){ int iStartTime = time(NULL);int i = 1;int iEndTime;while (i > 0)//这里应该放你要运行的程序 { i++;} iEndTime = time(NULL);printf("%ds elapsed.\n...
如何查看用c语言编写的程序的运行时间,以及内存使用
1、计时:主板高精度计时器, 精度是us级的(0.000001s)2、占用内存可用进程管理器测试
求C语言运行时间测试代码!
include include<stdio.h> include<stdlib.h> void main(void){ clock_t start,finish;double duration;start = clock();// //被测时间的随便什么东西 // finish = clock();duration = double(finish - start)/CLOCKS_PER_SEC;printf("time used:%f ms\n\n",1000*duration);} ...
C语言如何 计算程序运行时间
代码运行前获取当前系统时间,代码运行完再获取一次,相减得到时间差就是运行的时间了
C语言如何控制程序运行的时间?
利用定时器计数,在程序中判断,如果超过指定时间,退出。比如:定时器设置1秒计数一次。第一个程序,计数达到60秒,退出。