因为经常要用到集合做一些插入、查找、删除操作,都会考虑到性能问题。现在做了一个小的Demo来测试一下。
测试代码如下:
Sub Main()Sub Main()
Dim timeStart As DateTime = Nothing
Dim l As New List(Of String)
Dim q As New Queue(Of String)
Dim s As New Stack(Of String)
For i As Integer = 1 To 5000000
l.Add(String.Format("aj{0}", i))
q.Enqueue(String.Format("aj{0}", i))
s.Push(String.Format("aj{0}", i))
Next
Console.Write("输入要查找的字符串:")
Dim r As String = Console.ReadLine()
While (r <> "end")
timeStart = DateTime.Now
Console.WriteLine("List Contains result is {0}!耗时:{1}", l.Contains(r), DateTime.Now.Subtract(timeStart))
timeStart = DateTime.Now
Console.WriteLine("Queue Contains result is {0}!耗时:{1}", q.Contains(r), DateTime.Now.Subtract(timeStart))
timeStart = DateTime.Now
Console.WriteLine("Stack Contains result is {0}!耗时:{1}", s.Contains(r), DateTime.Now.Subtract(timeStart))
Console.Write("输入要查找的字符串:")
r = Console.ReadLine()
End While
Console.ReadKey()
End Sub
End Module
测试结果如下:
输入要查找的字符串:aj5000000
List Contains result is True!耗时:00:00:00.2812500
Queue Contains result is True!耗时:00:00:00.3281250
Stack Contains result is True!耗时:00:00:00
输入要查找的字符串:aj1
List Contains result is True!耗时:00:00:00
Queue Contains result is True!耗时:00:00:00
Stack Contains result is True!耗时:00:00:00.2500000
输入要查找的字符串:aj
List Contains result is False!耗时:00:00:00.2500000
Queue Contains result is False!耗时:00:00:00.2968750
Stack Contains result is False!耗时:00:00:00.3125000
输入要查找的字符串:end
观察测试结果,我觉得折中的选择还是使用List比较好!