AutoHotkey Benchmarks

Contents

Control Group

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

1,000,000 iterations each

Assignment

BenchmarkCodeAverage time per run (ms)
Classic
Variable = Lorem ipsum dolor sit amet
0.000435
Classic with variable
Variable = Lorem ipsum %OtherVariable% dolor sit amet
0.000487
Expression
Variable := "Lorem ipsum dolor sit amet"
0.000558
Expression with variable
Variable := "Lorem ipsum" . OtherVariable . " dolor sit amet"
0.000736
Expression explicit concatenation
Variable := "Lorem ipsum" . " dolor sit amet"
0.000657
Expression implicit concatenation
Variable := "Lorem ipsum" " dolor sit amet"
0.000685

1,000,000 iterations each

Comparison

BenchmarkCodeAverage time per run (ms)
Classic If statement
If Variable = abcdef
 Return
0.000654
Expression If statement
If (Variable = "abcdef")
 Return
0.000673
List comparison
If Variable In abcdef
 Return
0.000749
Ternary
% (Variable = "abcdef") ? "" : ""
0.000755
Classic If between
If Variable Between 123 And 124
 Return
0.000783
Expression If between
If (Variable >= 123 && Variable <= 124)
 Return
0.000901

1,000,000 iterations each

String Searching

BenchmarkCodeAverage time per run (ms)
String search statement
IfInString, Variable, abcdef
 Return
0.000888
List search statement
If Variable Contains abcdef
 Return
0.000938
String get position command
StringGetPos, Temp1, Variable, abcdef
0.001004
In string function
InStr(Variable,"abcdef")
0.000970

1,000,000 iterations each

Regular Expressions

BenchmarkCodeAverage time per run (ms)
Match function
RegExMatch(Variable,"S)ab.*?.f$")
0.001071
Replace function
RegExReplace(Variable,"S)ab.*?.f$","$0")
0.001134
Static match
RegExMatch(Variable,"S)abcdef")
0.001123
Static replace
RegExReplace(Variable,"c","c")
0.001542

500,000 iterations each

String Manipulation

BenchmarkCodeAverage time per run (ms)
Substring function
SubStr(Variable,2,3)
0.001079
String middle command
StringMid, Temp1, Variable, 2, 3
0.001175
String trim command
StringTrimLeft, Temp1, Variable, 1
0.001151
String replace command
StringReplace, Temp1, Variable, c, c, All
0.001522

1,000,000 iterations each

String Operations

BenchmarkCodeAverage time per run (ms)
String length function
StrLen(Variable)
0.001144
String length command
StringLen, Temp1, Variable
0.001196
String split command
StringSplit, Temp, Variable, c
0.001636
Case conversion
StringUpper, Temp1, Variable
0.001440

1,000,000 iterations each

Files

BenchmarkCodeAverage time per run (ms)
File attributes and exists function
FileExist(A_ScriptFullPath)
0.020278
If file exists
IfExist, %A_ScriptFullPath%
 Return
0.019089
Get size
FileGetSize, Temp1,%A_ScriptFullPath%
0.027758
Read file
FileRead, Temp1, *m100 %A_ScriptFullPath%
0.039676
Read file line
FileReadLine, Temp1, %A_ScriptFullPath%, 2
0.051664
Append to file
FileAppend, c, %A_Temp%\Temp.txt
0.585398
Copy file
FileCopy, %A_Temp%\Temp.txt, %A_Temp%\Temp1.txt, 1
0.345006
Move file
FileMove, %A_Temp%\Temp.txt, %A_Temp%\Temp.txt, 1
0.219591
Filesystem loop
Loop, %A_ScriptFullPath%
 Return
0.028558
File reading loop
Loop, Read, %A_ScriptFullPath%
 Return
0.052833

5,000 iterations each

Control Flow

BenchmarkCodeAverage time per run (ms)
Normal loop
Loop, 1
{
 
}
0.001557
While loop
While, (A_Index = 1)
{
 
}
0.001655
Parsing loop
Loop, Parse, Variable, ,
{
 
}
0.001890
Blank subroutine call
Gosub, BlankLabel
0.001597
Blank function call
BlankFunction()
0.001643

1,000,000 iterations each

Environment Variables

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

500,000 iterations each

Keyboard and mouse

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

10,000 iterations each

Dynamic Variables

BenchmarkCodeAverage time per run (ms)
Dynamic variable access
% %Variable%
0.001883
Dynamic variable assignment
%Variable% = abcdeg
0.001884

1,000,000 iterations each

System Information

FieldValue
AutoHotkey VersionAutoHotkey v1.0.48.05 ANSI (x86)
OS NameMicrosoft Windows 7 Professional
OS Version6.1.7601 Service Pack 1 Build 7601
OS ConfigurationStandalone Workstation
OS Build TypeMultiprocessor Free
System ManufacturerGigabyte Technology Co., Ltd.
System ModelP55-USB3
System Typex64-based PC
Processor(s)1 Processor(s) Installed.,[01]: Intel64 Family 6 Model 30 Stepping 5 GenuineIntel ~2798 Mhz
BIOS VersionAward Software International, Inc. F9, 11/1/2010
Total Physical Memory16,375 MB
Available Physical Memory12,896 MB
Virtual Memory: Max Size40,923 MB
Virtual Memory: Available36,843 MB