Каков самый быстрый способ добавить новый элемент в существующий массив?
Dim arr As Integer() = {1, 2, 3}
Dim newItem As Integer = 4
(Я уже знаю, что при работе с динамическим списком элементов вам лучше использовать List
, ArrayList
или аналогичный IEnumerables
. Но что делать, если вы застряли в устаревшем коде, который использует массивы?)
Что я пробовал до сих пор:
' A) converting to List, add item and convert back
Dim list As List(Of Integer)(arr)
list.Add(newItem)
arr = list.ToArray()
' --> duration for adding 100.000 items: 33270 msec
' B) redim array and add item
ReDim Preserve arr(arr.Length)
arr(arr.Length - 1) = newItem
' --> duration for adding 100.000 items: 9237 msec
' C) using Array.Resize
Array.Resize(arr, arr.Length + 1)
arr(arr.Length - 1) = newItem
' --> duration for adding 100.000 items: 1 msec
' --> duration for adding 100.000.000 items: 1168 msec
A) кажется очень медленным, так как каждый раз, когда добавляется элемент, делаются два преобразования всего массива. B) кажется более быстрым, но все же массив копируется один раз во время ReDim Preserve
. C) кажется самым быстрым на данный момент. Что-нибудь лучше?