.net 三个常用集合性能比较

     因为经常要用到集合做一些插入、查找、删除操作,都会考虑到性能问题。现在做了一个小的Demo来测试一下。

 

测试代码如下:

 

Module Module1

    
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比较好!

posted @ 2008-07-22 22:57  ajayumi  阅读(531)  评论(0编辑  收藏  举报