怎么知道自己编的c程序的运行时间

怎么知道自己编的c程序的运行时间,第1张

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

#include<stdioh>

#include<windowsh>

int main(void)

{

int i, j;

DWORD t1 = GetTickCount();

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

{

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

{

}

}

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

system("pause");

}

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

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

如果你已经有testbat,则统计运行时间的bat如下:

@echo off

set startime=%time%

call testbat

set endtime=%time%

echo 开始时间%startime%,结束时间%endtime%

call testbat也可以用你在testbat中的内容直接替换。

通过获取系统毫秒数来计算时间GetTickCount在函数开始前和结束后 取两次值求差值。

记录一个起始时间,记录一个结束时间,两个相减就是程序运行时间,代码如下

long start = SystemcurrentTimeMillis(); // 记录起始时间

try {

Threadsleep(5000); // 线程睡眠5秒,让运行时间不那么小

} catch (InterruptedException e) {

eprintStackTrace();

}

long end = SystemcurrentTimeMillis(); // 记录结束时间

Systemoutprintln(end-start); // 相减得出运行时间

得出的单位是毫秒。

获取程序运行时间:

在<timeh>里有函数clock();本身这个函数取得的时间好像是ms,要取得s就

写成clock()/CLOCKS_PER_SEC;但CLOCKS_PER_SEC是在timeh里定义的,如果没这个定义

那只能用clock();取得ms;这个函数的执行不会中途停止,如果是在windows系统下,因为它是

多任务系统,它需要在各任务之间切换,如果在测试过程中,执行其他程序,所其得的时间,就会

出现差别,还有windows运行速度相当快,对于小型的测试,所得的时间几乎为0,因此最好将

要测试的过程执行100次或以上,然后再将取得的时间执行次数;输出非常耗时间,没什么必要

的话,就不要输出

这是一个测试选择排序的程序

#include

<stdioh>

#include

<stdlibh>

#include

<timeh>

#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();

/

我的timeh内没有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();

}

以上就是关于怎么知道自己编的c程序的运行时间全部的内容,包括:怎么知道自己编的c程序的运行时间、怎么用bat 统计bat运行的时间、如何统计多线程的执行总时间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: https://outofmemory.cn/zz/9299284.html

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

发表评论

登录后才能评论

评论列表(0条)

保存