主要用于 测试 AHK 中 Sleep 命令的时间精度,通过两种方法测试 AutoHotkey 的 Sleep 命令的精度。它展示了 Sleep 的延时可能受系统精度的限制,并提供了更加精确的计时函数。
v1版:
; v1测试计时需要开启SetBatchLines -1,不然有内部延时会测试不准
SetBatchLines -1
; 此示例为测试AHK自带Sleep命令的精度,因为Sleep有+-20ms的精度问题。所以每次都不一样
计时()
Sleep 500
MsgBox % "计时函数测出 - 耗时:" 计时() " 毫秒"
t1:=A_TickCount
Sleep 500
MsgBox % "自带A_TickCount测出 - 耗时:" (A_TickCount-t1) " 毫秒"
Return
计时() {
Static
if 开始=
DllCall("QueryPerformanceFrequency", "Int64*", 频率), DllCall("QueryPerformanceCounter", "Int64*", 开始)
else
DllCall("QueryPerformanceCounter", "Int64*", 结束), 耗时:=(结束 - 开始)/频率*1000, 开始:=""
Return 耗时
}
v2版:
#Requires AutoHotkey v2.0
; 此示例为测试AHK自带Sleep命令的精度,因为Sleep有+-20ms的精度问题。所以每次都不一样
t1 := QPC()
Sleep 500
MsgBox "QPC函数测出 - 耗时:" (QPC()-t1) " 毫秒"
t1 := A_TickCount
Sleep 500
MsgBox "自带A_TickCount测出 - 耗时:" (A_TickCount-t1) " 毫秒"
Return
QPC() {
static f:=0, c:=DllCall("QueryPerformanceFrequency", "Int*",&f)+(f/=1000)
return (!DllCall("QueryPerformanceCounter", "Int64*",&c))*0+(c/f)
}
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。

评论(0)