#include <String.au3>

Global Const $aN = [1e1, 1e2, 1e3, 1e4]
Global $iT, $f_Overhead

Global $sMeasureFormat = "%8.3f  ms", $dFormLen = StringLen(StringFormat($sMeasureFormat, 0))
Global $sHeader = StringFormat("\n% 10s\t% " & $dFormLen & "s\t% " & $dFormLen & "s\n", "N", "Norm(Map)", "Norm(Array)")
ConsoleWrite($sHeader & _StringRepeat("-", 40))

For $N In $aN
	ConsoleWrite(StringFormat("\n% 10d", $N))

	Local $aArr[$N]
    For $i = 0 To $N - 1
        $aArr[$i] = Random(1, 100)
    Next

    Local $mMap[]
    For $i = 0 To $N - 1
        $mMap[$i] = Random(1, 100)
    Next

	; determine the overhead of loop [and optional other stuff]
	$iT = TimerInit()
	For $i = 1 To $N
	Next
	$f_Overhead = TimerDiff($iT)

	; Zuweisung an Map-Element
	$iT = TimerInit()
	For $i = 1 To $N
		Normalize($mMap)
	Next
	$iT = TimerDiff($iT)
	ConsoleWrite(StringFormat("\t" & $sMeasureFormat, ($iT - $f_Overhead) / $N))

	; Zuweisung an Array-Element
	$iT = TimerInit()
	For $i = 1 To $N
		Normalize($aArr)
	Next
	$iT = TimerDiff($iT)
	ConsoleWrite(StringFormat("\t" & $sMeasureFormat, ($iT - $f_Overhead) / $N))
Next
ConsoleWrite(@CRLF & @CRLF)



Func Normalize(ByRef $a)
    Local $l = 0
    For $i = 0 To UBound($a) - 1 Step 1
        $l += $a[$i] * $a[$i]
    Next
    $l = Sqrt($l)
    For $i = 0 To UBound($a) - 1 Step 1
        $a[$i] /= $l
    Next
EndFunc