那位高手知道C语言中如何查看程序运行时间
发布网友
发布时间:2022-04-24 08:56
我来回答
共4个回答
热心网友
时间:2022-05-04 16:12
获取程序运行时间:
在<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=0;i<r;i++)
{
for
(j=i+1;j<=r;j++)
{
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=0;j<M;j++)
{
/*
执行M次
*/
for
(i=0;i<N;*(a+i++)=rand()%10);
/*
每次重新赋值
*/
SelectSort(a,0,N-1);
}
finish=(double)clock();
printf("%.4fms",(finish-start)/M);
getchar();
}
热心网友
时间:2022-05-04 19:04
获取程序运行时间:
在<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=0;i<r;i++) {
for (j=i+1;j<=r;j++) {
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=0;j<M;j++) { /* 执行M次 */
for (i=0;i<N;*(a+i++)=rand()%10); /* 每次重新赋值 */
SelectSort(a,0,N-1);
}
finish=(double)clock();
printf("%.4fms",(finish-start)/M);
getchar();
}
热心网友
时间:2022-05-04 20:56
你在程序运行之前调用time函数,之后在调用不就行了,程序前要包括头文件#<time.h>
热心网友
时间:2022-05-04 23:04
CLOCK()是取的机器的"滴答"数. 不同的CPU不同. 一定会比毫秒精度高.