C语言求一个程序运行时间

C语言求一个程序运行时间,第1张

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

   /* 测量一个事件持续的时间*/

   printf( "Time to do %ld empty loops is ", i )

   start = clock()

   while( i-- )      

   finish = clock()

   duration = (double)(finish - start) / CLOCKS_PER_SEC

   printf( "%f seconds\n", duration )

   system("pause")

}

获取程序运行时间:

在<time.h>里有函数clock()本身这个函数取得的时间好像是ms,要取得s就

写成clock()/CLOCKS_PER_SEC但CLOCKS_PER_SEC是在time.h里定义的,如果没这个定义

那只能用clock()取得ms这个函数的执行不会中途停止,如果是在windows系统下,因为它是

多任务系统,它需要在各任务之间切换,如果在测试过程中,执行其他程序,所其得的时间,就会

出现差别,还有windows运行速度相当快,对于小型的测试,所得的时间几乎为0,因此最好将

要测试的过程执行100次或以上,然后再将取得的时间执行次数输出非常耗时间,没什么必要

的话,就不要输出

这是一个测试选择排序的程序

#include

<stdio.h>

#include

<stdlib.h>

#include

<time.h>

#define

M

1000

/*

执行次数

*/

#define

N

500

/*

数组大小

*/

void

SelectSort(int

*a,int

l,int

r)

{

int

i,j,v

for

(i=0i<ri++)

{

for

(j=i+1j<=rj++)

{

if

(*(a+i)>*(a+j))

v=*(a+i),*(a+i)=*(a+j),*(a+j)=v

}

}

}

void

main()

{

int

a[N],i,j

double

start,finish

/*

开始时间,结束时间

*/

start=(double)clock()

/*

我的time.h内没有CLOCKS_PER_SEC

*/

for

(j=0j<Mj++)

{

/*

执行M次

*/

for

(i=0i<N*(a+i++)=rand()%10)

/*

每次重新赋值

*/

SelectSort(a,0,N-1)

}

finish=(double)clock()

printf("%.4fms",(finish-start)/M)

getchar()

}

在程序开始时调用一次time()结束时调用一次time(),两次相减就能获得秒数。

例:

#include

<time.h>

#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",iEndTime-iStartTime)

return

0

}

但这个方法精度很低,只能精确到秒。要更高的精确度需要调用 *** 作系统的API。如在Windows下,精确到毫秒级:

#include

<windows.h>

#include

<stdio.h>

int

main()

{

unsigned

uStartTime

=

GetTickCount()//该函数只有在Win2000及以上的版本才被支持

int

i

=

1

unsigned

uEndTime

while

(i

>

0)

{

i++

}

uEndTime

=

GetTickCount()

printf("%ums

elapsed.\n",uEndTime-uStartTime)

return

0

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12009469.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-20
下一篇2023-05-20

发表评论

登录后才能评论

评论列表(0条)

    保存