在<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,要自己用频率和计数算时间。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)