将新项目添加到现有数组的最快方法是什么?
Dim arr As Integer() = {1, 2, 3}
Dim newItem As Integer = 4
List
(我已经知道,在使用动态项目列表时,您应该使用 aArrayList
或类似的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) 在这一点上似乎是最快的。有更好的吗?