c语言time(null)返回的是秒吗,time(NULL)和clock()区别与分析

①本质区别

time(NULL)是指返回从1970年1.1日(元旦)午夜0点到现在的秒数 实际时间

clock clock是进程使用的cpu时间,作用不大。 处理器时间或频率,

②返回值区别

time()得到的是秒做单位的

clock()得到的是毫秒做单位的, 因此通常 (double)clock()/CLOCKS_PER_SEC

time (null) 计算计算机的时间

clock 常粗略的计算任务的执行速度

③宏解释

define CLK_TCK CLOCKS_PER_SEC

CLOCKS_PER_SEC,它用来表示一秒钟会有多少个时钟计时单元,其定义如下:

define CLOCKS_PER_SEC ((clock_t)1000)

可以看到每过千分之一秒(1毫秒),调用clock()函数返回的值就加1。

可以使用公式clock()/CLOCKS_PER_SEC来计算一个进程自身的运行时间。例如:

void elapsed_time()

{

printf("Elapsed time:%u secs.\n",clock()/CLOCKS_PER_SEC);

}

time()

主要用来获取当前的系统时间,返回的结果是一个time_t类型,其值表示从UTC(Coordinated Universal Time)时间1970年1月1日00:00:00(称为UNIX系统的Epoch时间)到当前时刻的秒数。然后调用localtime函数将 time_t所表示的UTC时间转换为本地时间(我们是+8区,比UTC多8个小时)并转成struct tm类型,该类型的各数据成员分别表示年月日时分秒。

④ 实用

clock()实用

测量程序的运行时间

include “stdio.h”

include “stdlib.h”

include “time.h”

int main(void)

{

long i = 10000000L;

clock_t start, finish;

double duration;

/* 测量一个事件持续的时间/

printf( "Time to do %ld empty loops is ", i );

start = clock();

while( i-- ) ;/注意这行后面有个分号*/

finish = clock();

duration = (double)(finish - start) / CLOCKS_PER_SEC;

printf( "%f seconds\n", duration );

system("pause");

return 0;

}

这是一个求时间差的程序,那么为什么要除以CLOCKS_PER_SEC呢?  这是因为clock()是以毫秒为单位,要正确输出时间差需要把它换成秒,因此需要除以CLOCKS_PER_SEC。  clock()函数计算出来的是硬件滴答的数目,不是毫秒。在TC2.0中硬件每18.2个滴答是一秒,在VC++6.0中硬件每1000个滴答是一 秒。

上面我们看到时钟计时单元的长度为1毫秒,那么计时的精度也为1毫秒,那么我们可不可以通过改变CLOCKS_PER_SEC的定义,通过把它定义的大一些,从而使计时精度更高呢?通过尝试,你会发现这样是不行的。在标准C/C++中,最小的计时单位是一毫秒。

下面是一个更为简单的例子:

include

include

int main()

{

int n = 10000000;

while(n--);

printf("%f\n",clock()/(double)CLOCKS_PER_SEC);

return 0;

}

在VC++6.0中可以用CLK_TCK替换CLOCKS_PER_SEC。

time 实用

while(n>0)

{

long t = time(NULL)

t += 1;

while(t

cout<

n--;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值