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 )

}

获取程序运行时间:

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

}

#include "time.h"

#include "stdio.h"

main()

{

double start, finish

start = clock()//取开始时间

printf("Hello, World!\n")

finish = clock()//取结束时间

printf( "%f seconds\n",(finish - start) / CLOCKS_PER_SEC)//以秒为单位显示之

}

上面的代码理论上是可以显示printf("Hello, World!\n")语句的运行时间的,但我猜实际的显示结果是0,因为printf("Hello, World!\n")这个语句的运行时间是可以忽略不计的,加一个次数较多的循环才能看到效果


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存