admin管理员组

文章数量:1530518

2024年5月18日发(作者:)

介绍

我们在衡量一个函数运行时间,或者判断一个算法的时间效率,或者在程序中我们

需要一个定时器,定时执 行一个特定的操作,比如在多媒体中,比如在游戏中等,都会用

到时间函数。还比如我们通过记录函数或者算法开始和截至的时间,然后利用两者之差得

出函数或者 算法的运行时间。编译器和操作系统为我们提供了很多时间函数,这些时间函

数的精度也是各不相同的,所以,如果我们想得到准确的结果,必须使用合适的时间函 数。

现在我就介绍windows下的几种常用时间函数。

1:Sleep函数

使用:sleep(1000),在Windows和Linux下1000代表的含义并不相同,Windows

下的表示1000毫秒,也就是1秒钟;Linux下表示1000秒,Linux下使用毫秒级别的函

数可以使用usleep。

原理:sleep函数是使调用sleep函数的线程休眠,线程主动放弃时间片。当经过指

定的时间间隔后,再启动线程,继续执行代码。Sleep函数并不能起到定时的作用,主要

作用是延时。在一些多线程中可能会看到sleep(0);其主要目的是让出时间片。

精度:sleep函数的精度非常低,当系统越忙它精度也就越低,有时候我们休眠1秒,

可能3秒后才能继续执行。它的精度取决于线程自身优先级、其他线程的优先级,以及线

程的数量等因素。

2:MFC下的timer事件

使用:1.调用函数SetTimer()设置定时间隔,如SetTimer(0,100,NULL)即为设置

100毫秒的时间间隔;2.在应用程序中增加定时响应函数OnTimer(),并在该函数中添加

响应的处理语句,用来完成时间到时的操作。

原理:同sleep函数一样。不同的是timer是一个定时器,可以指定回调函数,默认

为OnTimer()函数。

精度:timer事件的精度范围在毫米级别,系统越忙其精度也就越差。

3:C语言下的Time

使用:time_t t;time(&t);Time函数是获取当前时间。

原理:time函数主要用于获取当前时间,比如我们做一个电子时钟程序,就可以使用

此函数,获取系统当前的时间。

精度:秒级别

4:COM对象中的COleDateTime,COleDateTimeSpan类

使用:COleDateTime start_time = COleDateTime::GetCurrentTime();

COleDateTimeSpan end_time = COleDateTime::GetCurrentTime()-start_time;

While(end_alSeconds() < 2)

本文标签: 时间函数线程精度比如