性能

AutoHotKey

脚本性能

要让性能最佳化, 请避免使用 SetFormat (不包括 快速模式) 并且在每个脚本的顶部附近加上下面的这些行:

#NoEnv
SetBatchLines -1
ListLines Off

此外, 根据脚本的内容下面的命令可能同样会影响性能: SendMode, SetKeyDelay, SetMouseDelay, SetWinDelay, SetControlDelaySetDefaultMouseSpeed.

内置性能特性

在加载和语法检查每个脚本时, 会对它们进行半编译. 这样除了可以减少内存消耗外, 还可以极大地提高运行时的性能.

下面是优化过程 (半编译) 的技术细节:

  • 把输入和输出变量 (当它们的名称不包含到其他变量的引用时) 和 名解析为内存地址.
  • Loop, 区块, IFELSE 提供它们在脚本中相关跳转点的内存地址.
  • 把每个 热键, GosubGoto 的目标解析为内存地址, 除非它是变量.
  • 使用跳转表把每个命令名替换为地址.
  • 把每行预解析成参数列表,且把每个参数预解析成变量列表(如果有).
  • 标记化每个 表达式 且把它们从中缀转到后缀.
  • 把每个到 变量函数 的引用解析为内存地址.
  • 把表达式和数学/比较命令中的原义整数替换成二进制整数.

此外, 在脚本执行期间, 对二进制数进行缓存以避免和字符串之间的相互转换. 请参阅 SetFormat 了解详情.