код на F# с аллокацией и одновременной инициализацией массива:
open System
open Microsoft.FSharp.Collections;
let finalValues =
let arrSize = 512 * 512 * 128
let start = 19 * arrSize
seq { for i in 0..arrSize-1 -> start + i }
let enumerator = finalValues.GetEnumerator()
let getNext _ _ _ =
enumerator.MoveNext()
enumerator.Current
let timeBefore = DateTime.Now
let yobaArray = Array3D.init 512 512 128 getNext
let timeAfter = DateTime.Now
printfn "Allocation and init time: %A" <| timeAfter - timeBefore
Console.ReadLine()
результаты:
Allocation and init time: 00:00:13.5615343