I posted this in case anyone has anything interesting to say about it, or spots some mistake in my test, or has any likely situations where variables/arrays might be significantly faster, or if these scripts can be optimised somewhat. Cheers.
Code: Select all
q:: ;speed for variables v. array seem to be roughly identical, arrays slightly faster
vCount := 100000
vText := "abcdefghijklmno"
vLen := StrLen(vText)
;==============================
vTickCount1 := A_TickCount
vOutput1 := ""
VarSetCapacity(vOutput1, vCount*(StrLen(vText)+2)*2)
Loop, 5
vTemp%A_Index% := ""
Loop, % vCount
{
Loop, % vLen
{
vNum := Mod(A_Index-1,5)+1
vTemp%vNum% .= SubStr(vText, A_Index, 1)
}
Loop, 5
vOutput1 .= vTemp%A_Index%, vTemp%A_Index% := ""
vOutput1 .= "`r`n"
}
;==============================
vTickCount2 := A_TickCount
vOutput2 := ""
VarSetCapacity(vOutput2, vCount*(StrLen(vText)+2)*2)
oArray := {}
Loop, 5
oArray[A_Index] := ""
Loop, % vCount
{
Loop, % vLen
{
vNum := Mod(A_Index-1,5)+1
oArray[vNum] .= SubStr(vText, A_Index, 1)
}
Loop, 5
vOutput2 .= oArray[A_Index], oArray[A_Index] := ""
vOutput2 .= "`r`n"
}
;==============================
vTickCount3 := A_TickCount
oArray := ""
;MsgBox, % vOutput1
;MsgBox, % vOutput2
MsgBox, % (vOutput1 = vOutput2)
MsgBox, % (vTickCount2-vTickCount1) " " (vTickCount3-vTickCount2)
return