那位高手知道C语言中如何查看程序运行时间

那位高手知道C语言中如何查看程序运行时间,第1张

获取程序运行时间

在<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 <stdio.h>

#include <燃戚举time.h>

int main( )

{

long start,end

start = clock()

//测试的程序段皮碧

end = clock()

printf("%ld\n",start-end)//单位:毫秒仔败

return 0

}

有一个简单的方法。在一段程序之前用GetTickCount计算下时间,在程序结束之后再用GetTickCount计算下时间,两段时间差就是这段时间运行所用的时间,单位是毫秒,如:

#include<stdio.h>

#include<windows.h>

int main(void)

{

int i, j

DWORD t1 = GetTickCount()

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

{

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

{

}

}

printf("%d\n", GetTickCount() - t1)

system("pause")

}

计算时间的方法其实都不精确,它得到的是程序从一个地方运行到另一个地方所间亩历隔的时间,但是这段间隔时间并不一定全都用于程序的计算过程,在这段时间内有可能CPU被其他进程占用了。

另外还有一个高精察耐度的迅没搜计算方法,是用QueryPerformanceFrequency和QueryPerformanceCounter,要自己用频率和计数算时间。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存