c++如何计算程序运行时间并输出

c++如何计算程序运行时间并输出,第1张

c++计算程序运行时间:

一、clock()计时函数:

clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t。clock函数定义如下:clock_t clock(void) 简单而言,就是该程序从启动到函数调用占用CPU的时间。这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock);若挂钟时间不可取,则返回-1。其中clock_t是用来保虚念存时间的数据类型。

二、相关定义:

在time.h文件中,我们可以找到对clock_t()的差冲困定义:#ifndef _CLOCK_T_DEFINEDtypedef long clock_t

#define _CLOCK_T_DEFINED

#endif

很明显,clock_t是一个长整形数。

在time.h文件中,还定义了一个常量CLOCKS_PER_SEC,它用来表示一秒钟会判衡有多少个时钟计时单元,其定义如下:#define CLOCKS_PER_SEC ((clock_t)1000)

三、使用实例:

//计算一段程序运行的时间

#include<iostream>

#include<ctime>

using namespace std

int main()

{

clock_t startTime,endTime

startTime = clock()//计时开始

for (long i = 0i <2147483640i++)

{

i++

}

endTime = clock()//计时结束

cout <<"The run time is: " <<(double)(endTime - startTime) / CLOCKS_PER_SEC <<"s" <<endl

system("pause")

return 0

}

//注释在:VC++6.0中可以用CLK_TCK替换CLOCKS_PER_SEC。

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

void main()

{

unsigned char time1[] = { 10, 8, 31, 9, 26 }

unsigned char time2[] = { 10, 8, 31, 9, 50 }

struct tm t1 = {0}

struct tm t2 = {0}

time_t _t1

time_t _t2

double diff

t1.tm_year = time1[0] + 100

t1.tm_mon = time1[1]

t1.tm_mday = time1[2]

t1.tm_hour = time1[3]

t1.tm_min = time1[4]

t2.tm_year = time2[0] + 100

t2.tm_mon = time2[1]

t2.tm_mday = time2[2]

t2.tm_hour = time2[3]

t2.tm_min = time2[4]

_t1 = _mkgmtime( &t1 )

_t2 = _mkgmtime( &t2 )

diff = difftime(_t2, _t1 )

printf( "相差 %.0f 分钟\n", diff / 60 )

}

扩展资料:

C语言中有两个相关的函数用来计算时间差,分别是:

time_t time( time_t *t)   与 clock_t clock(void)

头文件: time.h

计算的时间单位分别为: s   , ms

time_t 和 clock_t 是函数库time.h 中定义的用来保存时间的数据结构

返回值:滚激

1、time  : 返回从公元1970年1月1号的UTC时大纤袜间从0时0分0秒算起到现在所经过的秒数。如果参数 t 非空指针的话,返回的时间会保存在 t 所指向的内存。

2、clock:返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数。     1单元 = 1 ms。

所以我们可以根据具体情况需求,判断采用哪一个函数。

具体用法如下例子:

#include <time.h>

#include <stdio.h>

#include <stdlib.h>

int main()

{

time_t c_start, t_start, c_end, t_end

c_start = clock()    //!<单位为ms

t_start = time(NULL)  //!<单位为s

system("pause")

c_end   = clock()

t_end = time(NULL)

//!<difftime(time_t, time_t)返回两个time_t变量间的时间间隔,即时间差

printf("The pause used %f ms by clock()\n",difftime(c_end,c_start))

printf("The pause used %f s by time()\n",difftime(t_end,t_start))

system("pause")

return 0

}

因此,要计算竖侍某一函数块的占用时间时,只需要在执行该函数块之前和执行完该函数块之后调用同一个时间计算函数。再调用函数difftime()计算两者的差,即可得到耗费时间。

Matlab中计算函数运行时间的三种方法:

1、tic和toc组合侍核物

计算tic和toc之间那段程序之间的运行时间,它的经典格式为 :

tic

函数

toc

复制函数代码,当代码遇到tic时Matlab自动开始计时,运行到toc时自动计算此时与最近一次tic之间的时间。

2、etime(t1,t2)并和clock配合老液

计算t1,t2之间的时间差,它是通过调用windows系统的时钟进行时间差计算得到运行时间的,应用的形氏乱式:

t1=clock

函数

t2=clock

etime(t2,t1)

3、cputime函数来完成

使用方法和etime相似,只是这个是使用cpu的主频计算的,和前面原理不同,使用格式如下:

t0=cputime

函数

t1=cputime-t0


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存