F #: Почему Array.createZero такой быстрый?
У меня есть этот код:
let timer = new System.Diagnostics.Stopwatch()
timer.Start()
Array.zeroCreate<int> 100000000
timer.Stop()
printfn "%ims" timer.ElapsedMilliseconds
timer.Reset()
timer.Start()
Array.create 100000000 0
timer.Stop()
printfn "%ims" timer.ElapsedMilliseconds
Я проверил это и получил эти результаты:
0ms
200ms
КакArray.zeroCreate
создать массив так быстро, и гарантируется, что все его элементы имеют значение по умолчанию? На других языках, которые я знаю, таких возможностей нет (насколько я знаю). В других языках я знаю только о быстрой инициализации массива, элементы которого не гарантированно имеют значение по умолчанию, потому что они могут быть инициализированы в памяти, где лежит мусор.
Спасибо!