脚本性能
要让性能最佳化, 请避免使用 SetFormat (不包括 快速模式) 并且在每个脚本的顶部附近加上下面的这些行:
#NoEnv SetBatchLines -1 ListLines Off
此外, 根据脚本的内容下面的命令可能同样会影响性能: SendMode, SetKeyDelay, SetMouseDelay, SetWinDelay, SetControlDelay 和 SetDefaultMouseSpeed.
内置性能特性
在加载和语法检查每个脚本时, 会对它们进行半编译. 这样除了可以减少内存消耗外, 还可以极大地提高运行时的性能.
下面是优化过程 (半编译) 的技术细节:
- 把输入和输出变量 (当它们的名称不包含到其他变量的引用时) 和 组 名解析为内存地址.
- 为 Loop, 区块, IF 和 ELSE 提供它们在脚本中相关跳转点的内存地址.
- 把每个 热键, Gosub 和 Goto 的目标解析为内存地址, 除非它是变量.
- 使用跳转表把每个命令名替换为地址.
- 把每行预解析成参数列表,且把每个参数预解析成变量列表(如果有)。
- 标记化每个 表达式 且把它们从中缀转到后缀.
- 把每个到 变量 或 函数 的引用解析为内存地址.
- 把表达式和数学/比较命令中的原义整数替换成二进制整数.
此外, 在脚本执行期间, 对二进制数进行缓存以避免和字符串之间的相互转换. 请参阅 SetFormat 了解详情.