C语言中如何获取系统时间?

本文介绍了C/C++中多种时间处理方法,包括使用time()获取当前系统时间、clock()获取CPU时间、difftime()计算时间差、GetTickCount()测量程序运行时间以及使用QueryPerformanceCounter()和QueryPerformanceFrequency()实现高精度计时。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 使用time_t time( time_t * timer ) 精确到秒

函数名: time

头文件:time.h

函数原型:time_t time(time_t * timer)

功能: 获取当前的系统时间,返回的结果是一个time_t类型,其实就是一个大整数,其值表示从CUT(Coordinated Universal Time)时间1970年1月1日00:00:00(称为UNIX系统的Epoch时间)到当前时刻的秒数。

2 使用clock_t clock() 得到的是CPU时间 精确到1/CLOCKS_PER_SEC秒

clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t。

对clock函数定义如下:clock_t clock(void) ;

简单而言,就是该程序从启动到函数调用占用CPU的时间。这个函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,在MSDN中称之为挂钟时间(wal-clock);若挂钟时间不可取,则返回-1。其中clock_t是用来保存时间的数据类型,在time.h文件中

include

#include <<A style="COLOR: rgb(19,110,194); TEXT-DECORATION: none" href="https://baike.baidu.com/view/1347718.htm" target=_blank>stdlib.h>

#include

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 ", duration );

system("pause");

}

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

3 计算时间差使用double difftime( time_t timer1, time_t timer0 )

4 使用DWORD GetTickCount() 精确到毫秒

GetTickCount(),这个是windows里面常用来计算程序运行时间的函数;

DWORD dwStart = GetTickCount();

//这里运行你的程序代码

DWORD dwEnd = GetTickCount();

则(dwEnd-dwStart)就是你的程序运行时间, 以毫秒为单位

这个函数只精确到55ms,1个tick就是55ms。

5 要获取高精度时间,可以使用

BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency)

获取系统的计数器的频率

BOOL QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount)

获取计数器的值

然后用两次计数器的差除以Frequency就得到时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值