使用delphi性能计数器精确测量运行时间

对于常规桌面数据库应用程序,在任务的执行时间上增加一秒钟对最终用户来说几乎没有什么不同,但当您需要处理数百万个树叶或生成数十亿个唯一随机数时,执行速度就变得更加重要。...

对于常规桌面数据库应用程序,在任务的执行时间上增加一秒钟对最终用户来说几乎没有什么不同,但当您需要处理数百万个树叶或生成数十亿个唯一随机数时,执行速度就变得更加重要。

Image of a stopwatch on a computer keyboard.

计时你的代码

在某些应用中,非常精确、高精度的时间测量方法非常重要,幸运的是,Delphi提供了一个高性能计数器来限定这些时间。

使用rtl的now函数

一个选项使用Now函数。现在,在SysUtils单元中定义,返回当前系统日期和时间。

几行代码测量某个进程的“开始”和“停止”之间经过的时间:

Now函数返回当前系统日期和时间,精确到10毫秒(Windows NT及更高版本)或55毫秒(Windows 98)。

对于非常小的间隔,“现在”的精度有时是不够的。

使用windows api gettickcount

要获得更精确的数据,请使用GetTickCount Windows API函数。GetTickCount检索自系统启动以来经过的毫秒数,但该函数的精度仅为1毫秒,如果计算机长时间处于通电状态,则该函数可能并不总是准确的。

经过的时间存储为DWORD(32位)值。因此,如果Windows连续运行49.7天,时间将变为零。

GetTickCount也仅限于系统计时器的精度(10/55毫秒)。

高精度计时您的代码

如果您的电脑支持高分辨率性能计数器,请使用QueryPerformanceFrequency Windows API函数以每秒计数表示频率。计数的值取决于处理器。

QueryPerformanceCounter函数检索高分辨率性能计数器的当前值。通过在代码段的开头和结尾调用此函数,应用程序将计数器用作高分辨率计时器。

高分辨率计时器的精度约为几百纳秒。纳秒是一个时间单位,代表0.000000001秒——或十亿分之一秒。

tstopwatch:高分辨率计数器的delphi实现

通过对.Net命名约定的认可,像TStopWatch这样的计数器为精确的时间测量提供了高分辨率的Delphi解决方案。

TStopWatch通过计算底层计时器机制中的计时器计时来测量经过的时间。

  • IsHighResolution属性指示计时器是否基于高分辨率性能计数器。
  • Start方法开始测量经过的时间。
  • 停止方法停止测量经过的时间。
  • ElapsedMilliseconds属性获取以毫秒为单位的总运行时间。
  • Appeased属性获取以计时器计时为单位的总运行时间。

下面是一个用法示例:

  • 发表于 2021-09-15 03:49
  • 阅读 ( 180 )
  • 分类:编程

你可能感兴趣的文章

分析笔记本电脑电池健康状况的6个最佳工具

...情况时,您将知道何时校准电池。 不正确使用电池会缩短其寿命。监测电池的健康状况,使您能够采取纠正措施,以提高寿命。 它可以帮助防止其他问题,如你的笔记本电脑不充电时,**。 ...

  • 发布于 2021-03-18 07:49
  • 阅读 ( 212 )

7个免费工具,用于实时网站访问者跟踪

...下载WordPress插件。有几个自定义选项,包括颜色、时区、计数器、大小等。 ...

  • 发布于 2021-03-21 16:05
  • 阅读 ( 273 )

衡量mac性能的5款最佳mac基准应用

... 游戏玩家总是在寻找改善Mac游戏体验的方法。FPS计数器很方便,但要想找到一个计数器来衡量Mac的游戏内性能可能会很麻烦。计数它解决了这个问题,通过记录你的游戏和保持在一个有用的图形FPS跟踪。 ...

  • 发布于 2021-03-21 17:54
  • 阅读 ( 201 )

极客学校:学习Windows7–监控、性能和保持windows最新

...它允许您以图形方式查看实时性能信息。它通过使用性能计数器来实现这一点。性能计数器是对给定时间内某事物的执行情况的度量,性能计数器可以包含在操作系统中,也可以作为应用程序的一部分。性能计数器可以测量的一...

  • 发布于 2021-04-11 23:53
  • 阅读 ( 174 )

新的原子钟可以保持精确的时间直到世界末日

...严格地认为是最精确的:它基于错误的元素。NIST的时钟使用锶原子,但公认的时间定义是基于铯原子。NIST希望最终说服标准机构接受锶作为铯的补充或替代物,这使其有充分的理由推进其工作。
 尽管如此,NIST仍将面临来自...

  • 发布于 2021-04-25 04:00
  • 阅读 ( 95 )

如何检查硬盘是否出现故障

...chkdsk是你的朋友您可以尝试的第一件也是最简单的事情是使用chkdsk查找文件系统错误,前提是您的驱动器没有遇到严重的稳定性问题(或者前面提到的死机点击)。您可能需要做更多的工作来全面了解您的驱动器运行情况,但是...

  • 发布于 2021-05-14 00:03
  • 阅读 ( 145 )

使用这些应用程序对图形卡进行基准测试

...,您可以通过Steam或Nvidia的Geforce体验轻松启用游戏中的FPS计数器(如果它还没有内置的FPS计数器)用基准测试来补充游戏体验有两个主要原因:对你的卡能做什么和不能做什么有一个可重复的、可测量的测试,并且能够将你的测...

  • 发布于 2021-05-14 17:10
  • 阅读 ( 120 )

五个功能强大的内置windows工具,您可能不知道

...机上连接了三个硬盘,那么物理磁盘对象将有三个实例。计数器。对象的每个实例进一步细分为计数器,这些计数器是可以测量的对象的实际方面。例如,物理磁盘对象包括许多计数器,例如%disk Time、%Idle Time和每次读取的平均...

  • 发布于 2021-05-21 17:08
  • 阅读 ( 79 )

浏览器速度测试:Windows7结果

...0.01这次在Windows7上比Safari要瘦一点,Chrome用它自己的内存计数器来衡量,仍然需要相当大的努力才能达到这个速度。再说一次,如果你用的是4GB内存的笔记本电脑,那可能没什么大不了的。评分结果我们将在这里尝试一些新的东...

  • 发布于 2021-07-28 06:11
  • 阅读 ( 120 )

了解delphi编程的基础知识

...写事件处理程序以使组件协作。 德尔菲帕斯卡 在开始使用Delphi的RAD功能开发更复杂的应用程序之前,您应该学习Delphi Pascal语言的基础知识。此时,您需要开始仔细考虑代码维护,包括代码注释,以及如何清除Delphi代码错误...

  • 发布于 2021-09-06 15:13
  • 阅读 ( 182 )
vjs1793918
vjs1793918

0 篇文章

相关推荐