65.9K
CodeProject 正在变化。 阅读更多。
Home

CPerfTimer 定时器类

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.21/5 (20投票s)

2000 年 4 月 12 日

viewsIcon

249414

downloadIcon

3209

该类封装了 QueryPerformanceCounter,用于高精度计时。

更新:该类现在是线程安全的。

Win32 中通过 QueryPerformanceCounterQueryPerformanceFrequency API 调用支持高分辨率计时。定时器分辨率因处理器而异。如今的高速处理器具有小于微秒的定时器分辨率。当然,这比 GetTickCount API 具有更好的分辨率!

直接使用 QueryPerformanceCounter 调用需要键入太多内容,并且生成的代码通常难以阅读。因此,我在网上搜索了一个定时器类,但没有找到一个适合我的。我编写了一个简单而强大的定时器类,并将其命名为 CPerfTimer。我很久以前就编写了这个类,但至今还没有必要更新它。搜索网络后,我没有找到一个像 CPerfTimer 一样易于使用和有用的定时器类。还有其他一些定时器类可用,它们的简单性和实用性各不相同。我并不声称这是定时器类的终极版本;但是,我希望有人会觉得它足够有用,从而避免花费时间编写另一个定时器类。

该类易于使用。只需将变量声明为 CPerfTimer 类型,调用 Start() 开始计时,并调用 Stop() 停止计时。可以通过调用 Stop() 然后调用 Start() 来暂停计时器并恢复。通过调用 Elapsed...() 函数来检索经过的时间。支持赋值、加法、减法和比较。还提供了一些信息调用。除了 StartStop 之外的所有调用都可以在不停止计时器的情况下执行。

我没有包含单独的文档或示例应用程序。代码已经记录得相当好,并且上面的段落是从 CPerfTimer.h 文件中复制的。还包括用于添加、减去和比较 CPerfTimers 和秒数(double)的方法。还有一个 CPerfTimerT 类,应该线程安全(没有进行广泛的测试)。如果您发现任何错误或对增强有任何想法,请告知我。

许可证

本文未附加明确的许可证,但可能在文章文本或下载文件本身中包含使用条款。如有疑问,请通过下面的讨论区联系作者。

作者可能使用的许可证列表可以在此处找到。

© . All rights reserved.