五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > 無聊對比了幾種容器的操作:LIST ARRAYLIST HASH表,數(shù)組,嘿嘿

無聊對比了幾種容器的操作:LIST ARRAYLIST HASH表,數(shù)組,嘿嘿

文章來源:365jz.com     點擊數(shù):622    更新時間:2009-09-14 10:56   參與評論

最近無聊,對比了一下幾種容器控件,也記錄一下,下次自已好提醒下,現(xiàn)在內(nèi)存這么便宜,還是提倡是使用哈希表,而LIST<>集合也不錯,但學(xué)是慢了
測試數(shù)據(jù)第一次為一W條,第二次為十W條,
時間是以微秒計,如以下這樣記數(shù)
  long StartTime = DateTime.Now.Ticks;
            for (i = 0; i < 100000; i++)
            {
                arr.Add(i);
            }
            long EndTime = DateTime.Now.Ticks;

            Console.WriteLine("ArryList添加執(zhí)行時間:" + (EndTime - StartTime));

            StartTime = DateTime.Now.Ticks;
            for (i = 0; i < 100000; i++)
            {
                hs.Add(i, "我是" + i);
            }
            EndTime = DateTime.Now.Ticks;
            Console.WriteLine("Hashtable添加執(zhí)行時間:" + (EndTime - StartTime));
數(shù)據(jù)為1W條的時候
yellowyu

ArryList添加執(zhí)行時間:            0
Hashtable添加執(zhí)行時間:         156250
List添加執(zhí)行時間:                  0
數(shù)組添加執(zhí)行時間:                 0
ArryList查找執(zhí)行時間:           7968750
Hashtable查找執(zhí)行時間:         0
List查找執(zhí)行時間:                  3906250
數(shù)組查找執(zhí)行時間:                 3906250
ArryList刪除執(zhí)行時間:            937500
Hashtable刪除執(zhí)行時間:         0
List刪除執(zhí)行時間:                  468750

而這時候的速度還可以原諒,畢竟7968750微秒還可以忍受,這是測一W條數(shù)據(jù)的時候,但當(dāng)你把數(shù)據(jù)提升到十W條的時候,下面的數(shù)據(jù)你就知道無法忍受了
而添加時,肯定是哈希表是最花時間的,因為要建這么一張索引表,還有分配那部分空間
但是查找上,哈希表是最快的,LIST第二,數(shù)組的順序查找,也算是比較慢的查找,跟LIST差不多,如果折半可能會快三倍到五倍吧,而ARRAYLIST是最慢的
在刪除上,不明白為什么時間比查找還要少,有明白的幫忙講下,嘿嘿

而當(dāng)把數(shù)據(jù)查找提到十W條的時候
數(shù)據(jù)是以下這樣的
yellowyu

ArryList添加執(zhí)行時間:     156250
Hashtable添加執(zhí)行時間:  1093750
List添加執(zhí)行時間:           0
數(shù)組添加執(zhí)行時間:          0
ArryList查找執(zhí)行時間:     823125000
Hashtable查找執(zhí)行時間:  156250
List查找執(zhí)行時間:           430781250
數(shù)組查找執(zhí)行時間:          394062500
ArryList刪除執(zhí)行時間:     124843750
Hashtable刪除執(zhí)行時間:  0
List刪除執(zhí)行時間:           53125000

我想誰也忍受不了那個程序運(yùn)行個查找要823125000微秒吧,太變態(tài)了吧
在需要大量查找時,我更喜歡用HASH表,而LIST集合由于保存著值類型,使用起來相當(dāng)方便,也是比較喜歡的,我討厭死Arraylist了

大家可是在自已的機(jī)子上試試,我的本本是雙核1.6
程序代碼是:
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("yellowyu");
            Console.ReadLine();
            int i;
            System.Collections.Hashtable hs = new System.Collections.Hashtable();
            System.Collections.ArrayList arr = new System.Collections.ArrayList();
            List<int> IntList = new List<int>();
            int[] a = new int[100000];


            long StartTime = DateTime.Now.Ticks;
            for (i = 0; i < 100000; i++)
            {
                arr.Add(i);
            }
            long EndTime = DateTime.Now.Ticks;

            Console.WriteLine("ArryList添加執(zhí)行時間:" + (EndTime - StartTime));

            StartTime = DateTime.Now.Ticks;
            for (i = 0; i < 100000; i++)
            {
                hs.Add(i, "我是" + i);
            }
            EndTime = DateTime.Now.Ticks;
            Console.WriteLine("Hashtable添加執(zhí)行時間:" + (EndTime - StartTime));


            StartTime = DateTime.Now.Ticks;
            for (i = 0; i < 100000; i++)
            {
                IntList.Add(i);
            }
            EndTime = DateTime.Now.Ticks;
            Console.WriteLine("List添加執(zhí)行時間:" + (EndTime - StartTime));

            StartTime = DateTime.Now.Ticks;
            for (i = 0; i < 100000; i++)
            {
                a[i] = i;
            }
            EndTime = DateTime.Now.Ticks;
            Console.WriteLine("數(shù)組添加執(zhí)行時間:" + (EndTime - StartTime));


            StartTime = DateTime.Now.Ticks;
            for (i = 0; i < 100000; i++)
            {
                arr.Contains(i);
            }
            EndTime = DateTime.Now.Ticks;

            Console.WriteLine("ArryList查找執(zhí)行時間:" + (EndTime - StartTime));

            StartTime = DateTime.Now.Ticks;
            for (i = 0; i < 100000; i++)
            {
                hs.Contains(i);
            }
            EndTime = DateTime.Now.Ticks;
            Console.WriteLine("Hashtable查找執(zhí)行時間:" + (EndTime - StartTime));


            StartTime = DateTime.Now.Ticks;
            for (i = 0; i < 100000; i++)
            {
                IntList.Contains(i);
            }
            EndTime = DateTime.Now.Ticks;
            Console.WriteLine("List查找執(zhí)行時間:" + (EndTime - StartTime));

            StartTime = DateTime.Now.Ticks;
            for (i = 0; i < 100000; i++)
            {
                for (int q = 0; q < 100000; q++)
                {
                    if (i == a[q])
                    {
                        break;
                    }
                }
            }

            EndTime = DateTime.Now.Ticks;
            Console.WriteLine("數(shù)組查找執(zhí)行時間:" + (EndTime - StartTime));

            StartTime = DateTime.Now.Ticks;
            for (i = 0; i < 100000; i++)
            {
                arr.Remove(i);
            }
            EndTime = DateTime.Now.Ticks;
            Console.WriteLine("ArryList刪除執(zhí)行時間:" + (EndTime - StartTime));

            StartTime = DateTime.Now.Ticks;
            for (i = 0; i < 100000; i++)
            {
                hs.Remove(i);
            }
            EndTime = DateTime.Now.Ticks;
            Console.WriteLine("Hashtable刪除執(zhí)行時間:" + (EndTime - StartTime));

            StartTime = DateTime.Now.Ticks;
            for (i = 0; i < 100000; i++)
            {
                IntList.Remove(i);
            }
            EndTime = DateTime.Now.Ticks;
            Console.WriteLine("List刪除執(zhí)行時間:" + (EndTime - StartTime));

            Console.ReadLine();
        }
    }
}





如對本文有疑問,請?zhí)峤坏浇涣髡搲?,廣大熱心網(wǎng)友會為你解答??! 點擊進(jìn)入論壇

發(fā)表評論 (622人查看,0條評論)
請自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動的言論。
昵稱:
最新評論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號