对于常规桌面数据库应用程序,在任务的执行时间上增加一秒钟对最终用户来说几乎没有什么不同,但当您需要处理数百万个树叶或生成数十亿个唯一随机数时,执行速度就变得更加重要。
在某些应用中,非常精确、高精度的时间测量方法非常重要,幸运的是,Delphi提供了一个高性能计数器来限定这些时间。
一个选项使用Now函数。现在,在SysUtils单元中定义,返回当前系统日期和时间。
几行代码测量某个进程的“开始”和“停止”之间经过的时间:
Now函数返回当前系统日期和时间,精确到10毫秒(Windows NT及更高版本)或55毫秒(Windows 98)。
对于非常小的间隔,“现在”的精度有时是不够的。
要获得更精确的数据,请使用GetTickCount Windows API函数。GetTickCount检索自系统启动以来经过的毫秒数,但该函数的精度仅为1毫秒,如果计算机长时间处于通电状态,则该函数可能并不总是准确的。
经过的时间存储为DWORD(32位)值。因此,如果Windows连续运行49.7天,时间将变为零。
GetTickCount也仅限于系统计时器的精度(10/55毫秒)。
如果您的电脑支持高分辨率性能计数器,请使用QueryPerformanceFrequency Windows API函数以每秒计数表示频率。计数的值取决于处理器。
QueryPerformanceCounter函数检索高分辨率性能计数器的当前值。通过在代码段的开头和结尾调用此函数,应用程序将计数器用作高分辨率计时器。
高分辨率计时器的精度约为几百纳秒。纳秒是一个时间单位,代表0.000000001秒——或十亿分之一秒。
通过对.Net命名约定的认可,像TStopWatch这样的计数器为精确的时间测量提供了高分辨率的Delphi解决方案。
TStopWatch通过计算底层计时器机制中的计时器计时来测量经过的时间。
下面是一个用法示例:
...情况时,您将知道何时校准电池。 不正确使用电池会缩短其寿命。监测电池的健康状况,使您能够采取纠正措施,以提高寿命。 它可以帮助防止其他问题,如你的笔记本电脑不充电时,**。 ...
... 游戏玩家总是在寻找改善Mac游戏体验的方法。FPS计数器很方便,但要想找到一个计数器来衡量Mac的游戏内性能可能会很麻烦。计数它解决了这个问题,通过记录你的游戏和保持在一个有用的图形FPS跟踪。 ...
...它允许您以图形方式查看实时性能信息。它通过使用性能计数器来实现这一点。性能计数器是对给定时间内某事物的执行情况的度量,性能计数器可以包含在操作系统中,也可以作为应用程序的一部分。性能计数器可以测量的一...
...严格地认为是最精确的:它基于错误的元素。NIST的时钟使用锶原子,但公认的时间定义是基于铯原子。NIST希望最终说服标准机构接受锶作为铯的补充或替代物,这使其有充分的理由推进其工作。 尽管如此,NIST仍将面临来自...
...chkdsk是你的朋友您可以尝试的第一件也是最简单的事情是使用chkdsk查找文件系统错误,前提是您的驱动器没有遇到严重的稳定性问题(或者前面提到的死机点击)。您可能需要做更多的工作来全面了解您的驱动器运行情况,但是...
...,您可以通过Steam或Nvidia的Geforce体验轻松启用游戏中的FPS计数器(如果它还没有内置的FPS计数器)用基准测试来补充游戏体验有两个主要原因:对你的卡能做什么和不能做什么有一个可重复的、可测量的测试,并且能够将你的测...
...机上连接了三个硬盘,那么物理磁盘对象将有三个实例。计数器。对象的每个实例进一步细分为计数器,这些计数器是可以测量的对象的实际方面。例如,物理磁盘对象包括许多计数器,例如%disk Time、%Idle Time和每次读取的平均...
...0.01这次在Windows7上比Safari要瘦一点,Chrome用它自己的内存计数器来衡量,仍然需要相当大的努力才能达到这个速度。再说一次,如果你用的是4GB内存的笔记本电脑,那可能没什么大不了的。评分结果我们将在这里尝试一些新的东...
...写事件处理程序以使组件协作。 德尔菲帕斯卡 在开始使用Delphi的RAD功能开发更复杂的应用程序之前,您应该学习Delphi Pascal语言的基础知识。此时,您需要开始仔细考虑代码维护,包括代码注释,以及如何清除Delphi代码错误...