TIMER
- 来源: https://www.freebasic.net/wiki/wikka.php?wakka=KeyPgTimer
- 最后更新: 2016-03-13
返回自某个静态参考点以来经过的时间量
语法
` declare function Timer ( ) as double
`
用法
` result = Timer
`
返回值
返回一个 double 精度结果,表示自某个静态参考点以来经过的秒数。
说明
Timer 函数用于测量某段代码运行所需的时间,或控制代码的执行时序。要获取程序中两个时间点之间经过的时间,可以在起始点和结束点分别记录 Timer 的值,然后用结束值减去起始值。
在某些平台上,Timer 的值会在午夜重置为零(见下文)。如果起始时间和结束时间分别在重置点的两侧,则差值将为负数,这可能导致某些程序出现意外行为。在这种情况下,将差值加上 86400(24小时的秒数)应能得到正确结果。若经过时间超过一天,还需要检查已经过的天数。
Timer 返回的值不受春季和秋季系统时钟自动调整(夏令时,DST)的影响。
示例
start GeSHi
'' Example of using TIMER function
'' Note: see text about correct waiting strategies
Dim Start As Double
Print "Wait 2.5 seconds."
Start = Timer
Do
Sleep 1, 1
Loop Until (Timer - Start) > 2.5
Print "Done."end GeSHi
平台差异
在 Win32 和 Linux 上,如果程序需要等待 0.1 秒或更长时间,应使用
Sleep,这样在等待期间可以让其他程序运行。对于更短的延迟,使用 TIMER 循环可以更精确。参考点的选择因平台而异。在 Windows 上,时间从计算机启动时开始计量。在 DOS 上,时间从 1970 年 1 月 1 日开始计量。
DOS 用户注意:如今自 1970 年以来的秒数已超过
10^9,因此不适合存储在Single精度变量中,也不应该(为了获取 1/10 秒等)将其乘以某个数后存入 32 位整数变量中TIMER 的精度因计算机而异。如果处理器有精密计时器(如 Intel 的 Performance Counter 奔腾处理器)且操作系统使用它,则精度与处理器时钟相关,预计可达微秒级。对于较旧的处理器(386、486),以及 DOS 中始终如此,分辨率为 1/18 秒。
在 DOS 中使用 TIMER 可能会引起磁盘访问,详见论坛的分析和解决方案
与 QB 的差异
- 在 QB 中,TIMER 返回从上一个午夜起的秒数,精度为 1/18 秒
参见
TimeSleep
返回 目录