c语言 计算程序运行时间

c语言 计算程序运行时间,第1张

#include <stdio.h>

#include <time.h>

#define N 10000 /*这个数字可以自己改,如果时间太长结果不出来你就改小点*/

void f()

{

int i, j, k

for ( i = 0i <N++i )

for ( j = 0j <N++j )

for ( k = 0k <N++k )

}

int main()

{

clock_t begin, duration

begin = clock()

f()

duration = clock() - begin

printf( "函数f()的运行时间大约为:%dms\n", duration*1000/CLOCKS_PER_SEC )

}

这个需要分情况来看。

1.C语言源程序通过预处理然后编译,产生汇编代码,不同的汇编代码和指令有不同的执行时间。

2.一个指令的执行时间,用其所需要的指令周期(执行一条指令所需要的时间)来衡量。对于单字节指令,就是一个读取-执行周期(fetch-execute cycle),对于多字节指令,还需要更多的指令周期。

3.一个指令周期,一般是由若干个机器周期(完成一次基本 *** 作需要的时间,比如获取变量在RAM当中的地址)组成。

4.再一个,时钟周期,这个可以形象一点地和通常所说的主频联系起来,比如CPU核心的主频是2.5GHz,则时钟周期为0.4ns,这个是计算机当中最小的时间计量单位。一个机器周期由若干个时钟周期组成。

获取程序运行时间:

在<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()

}


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

原文地址: http://outofmemory.cn/yw/11066507.html

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

发表评论

登录后才能评论

评论列表(0条)

保存