[完全版] 究極のC#プログラミング ~新スタイルによる実践的コーディング のlist2.3をやってみました。
ListとLinkedListのそれぞれで1000回リンクに挿入するのを10回行うコードです。
1つめがList、2つめがLinkedListです。LinledList、確かに速い。
環境は、CoreDuo 1.2GHz、Memory2GB、Vista SP2。
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace list2._3 { class Program { static void Main(string[] args) { int loop1 = 100; int loop2 = 10000; // Listクラスの利用 DateTime start1 = DateTime.Now; for (int counter1 = 0; counter1 < loop1; counter1++) { var list1 = new List<string>(); list1.Add("First"); list1.Add("Last"); for (int counter2 = 0; counter2 < loop2; counter2++) { list1.Insert(1, "Inserted"); } } var end1 = DateTime.Now; Console.WriteLine(end1 - start1); // LinkedListクラスの利用 var start2 = DateTime.Now; for (int counter3 = 0; counter3 < loop1; counter3++) { var list2 = new LinkedList<string>(); list2.AddFirst("First"); list2.AddLast("Last"); for (int counter4 = 4; counter4 < loop2; counter4++) { list2.AddAfter(list2.First, "Inserted"); } } var end2 = DateTime.Now; Console.WriteLine(end2 - start2); } } }
実現している機能がことなるので、単純比較はできないけれども。