AutoHotkey Benchmarks

Contents

Control Group

BenchmarkCodeAverage time per run (ms)
Blank Run
(None)
0.001292

1,000,000 iterations each

Assignment

BenchmarkCodeAverage time per run (ms)
Classic
Variable = Lorem ipsum dolor sit amet
0.001900
Classic with variable
Variable = Lorem ipsum %OtherVariable% dolor sit amet
0.002029
Expression
Variable := "Lorem ipsum dolor sit amet"
0.002358
Expression with variable
Variable := "Lorem ipsum" . OtherVariable . " dolor sit amet"
0.003272
Expression explicit concatenation
Variable := "Lorem ipsum" . " dolor sit amet"
0.003199
Expression implicit concatenation
Variable := "Lorem ipsum" " dolor sit amet"
0.002966

1,000,000 iterations each

Comparison

BenchmarkCodeAverage time per run (ms)
Classic If statement
If Variable = abcdef
 Return
0.003441
Expression If statement
If (Variable = "abcdef")
 Return
0.003802
List comparison
If Variable In abcdef
 Return
0.004424
Ternary
% (Variable = "abcdef") ? "" : ""
0.003841
Classic If between
If Variable Between 123 And 124
 Return
0.005469
Expression If between
If (Variable >= 123 && Variable <= 124)
 Return
0.004330

1,000,000 iterations each

String Searching

BenchmarkCodeAverage time per run (ms)
String search statement
IfInString, Variable, abcdef
 Return
0.005085
List search statement
If Variable Contains abcdef
 Return
0.005058
String get position command
StringGetPos, Temp1, Variable, abcdef
0.005171
In string function
InStr(Variable,"abcdef")
0.006430

1,000,000 iterations each

Regular Expressions

BenchmarkCodeAverage time per run (ms)
Match function
RegExMatch(Variable,"S)ab.*?.f$")
0.005792
Replace function
RegExReplace(Variable,"S)ab.*?.f$","$0")
0.006233
Static match
RegExMatch(Variable,"S)abcdef")
0.006129
Static replace
RegExReplace(Variable,"S)c","c")
0.007252

500,000 iterations each

String Manipulation

BenchmarkCodeAverage time per run (ms)
Substring function
SubStr(Variable,2,3)
0.005599
String middle command
StringMid, Temp1, Variable, 2, 3
0.006233
String trim command
StringTrimLeft, Temp1, Variable, 1
0.007788
String replace command
StringReplace, Temp1, Variable, c, c, All
0.007381

1,000,000 iterations each

String Operations

BenchmarkCodeAverage time per run (ms)
String length function
StrLen(Variable)
0.006757
String length command
StringLen, Temp1, Variable
0.006623
String split command
StringSplit, Temp, Variable, c
0.009463
Case conversion
StringUpper, Temp1, Variable
0.009242

1,000,000 iterations each

Files

BenchmarkCodeAverage time per run (ms)
File attributes and exists function
FileExist(A_ScriptFullPath)
0.100340
If file exists
IfExist, %A_ScriptFullPath%
 Return
0.107878
Get size
FileGetSize, Temp1,%A_ScriptFullPath%
0.149407
Read file
FileRead, Temp1, *m100 %A_ScriptFullPath%
0.159275
Read file line
FileReadLine, Temp1, %A_ScriptFullPath%, 2
0.172892
Append to file
FileAppend, c, %A_Temp%\Temp.txt
0.577977
Copy file
FileCopy, %A_Temp%\Temp.txt, %A_Temp%\Temp1.txt, 1
1.477076
Move file
FileMove, %A_Temp%\Temp.txt, %A_Temp%\Temp.txt, 1
1.339481
Filesystem loop
Loop, %A_ScriptFullPath%
 Return
0.138294
File reading loop
Loop, Read, %A_ScriptFullPath%
 Return
0.150428

5,000 iterations each

Control Flow

BenchmarkCodeAverage time per run (ms)
Normal loop
Loop, 1
{
 
}
0.011674
While loop
While, (A_Index = 1)
{
 
}
0.012545
Parsing loop
Loop, Parse, Variable, ,
{
 
}
0.012339
Blank subroutine call
Gosub, BlankLabel
0.011016
Blank function call
BlankFunction()
0.012459

1,000,000 iterations each

Environment Variables

BenchmarkCodeAverage time per run (ms)
Set environment variable
EnvSet, EnvVar, abcdeg
0.014669
Get environment variable
EnvGet, Temp1, EnvVar
0.014282

500,000 iterations each

Keyboard and mouse

BenchmarkCodeAverage time per run (ms)
Get mouse position
MouseGetPos, Temp1, Temp2
0.025483
Move mouse
MouseMove, 0, 0, 0, R
0.090235

5,000 iterations each

Dynamic Variables

BenchmarkCodeAverage time per run (ms)
Dynamic variable access
% %Variable%
0.014939
Dynamic variable assignment
%Variable% = abcdeg
0.012496

1,000,000 iterations each

System Information

FieldValue
AutoHotkey VersionAutoHotkey v1.0.97.00 ANSI (x86)
OS NameMicrosoft Windows 7 Enterprise
OS Version6.1.7601 Service Pack 1 Build 7601
OS ConfigurationStandalone Workstation
OS Build TypeMultiprocessor Free
System ManufacturerDell Inc.
System ModelLatitude D620
System TypeX86-based PC
Processor(s)1 Processor(s) Installed.,[01]: x86 Family 6 Model 14 Stepping 8 GenuineIntel ~989 Mhz
BIOS VersionDell Inc. A04, 8/28/2006
Total Physical Memory3,062 MB
Available Physical Memory1,105 MB
Virtual Memory: Max Size6,123 MB
Virtual Memory: Available3,809 MB