The answer is not to use array slices for creating arrays item by item. Here's an alternative to the above test with very different results.
My results:
0
19
32
9
0
' TList vs Array Global HelloDump:Int Type Test Field Hello:Int = 100 End Type Global m = MilliSecs() Global Array:Object[] Global List:TList = New TList Global T:Test = New Test Print MilliSecs() - m For i = 0 To 100000 List.AddLast(T) Next Global z = (MilliSecs() - m) Print z array=List.ToArray() Global q = (MilliSecs() - z - m) Print (q+z) For a:Test = EachIn List HelloDump = a.Hello Next Global r = (MilliSecs() - z - m - q) Print r For y = 0 To 10000 HelloDump = Test(Array[y]).Hello Next Global b = (MilliSecs() - z - m - q - r) Print b
My results:
0
19
32
9
0