Pastebin launched a little side project called VERYVIRAL.com, check it out ;-) Want more features on Pastebin? Sign Up, it's FREE!
Guest

C# collections performance differences...

By: a guest on Nov 3rd, 2012  |  syntax: C#  |  size: 5.00 KB  |  views: 57  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Diagnostics;
  6.  
  7. namespace Benchmarking
  8. {
  9.     static class Collections
  10.     {
  11.         public static void run()
  12.         {
  13.             Random rand = new Random();
  14.             Stopwatch sw = new Stopwatch();
  15.             Stack<int> stack = new Stack<int>();
  16.             Queue<int> queue = new Queue<int>();
  17.             List<int> list1 = new List<int>();
  18.             List<int> list2 = new List<int>();
  19.             LinkedList<int> linkedlist1 = new LinkedList<int>();
  20.             LinkedList<int> linkedlist2 = new LinkedList<int>();
  21.             int dummy;
  22.  
  23.  
  24.             sw.Reset();
  25.             Console.Write("{0,40}", "Pushing to Stack...");
  26.             sw.Start();
  27.             for (int i = 0; i < 100000; i++)
  28.             {
  29.                 stack.Push(rand.Next());
  30.             }
  31.             sw.Stop();
  32.             Console.WriteLine("  Time used: {0,9} ticks", sw.ElapsedTicks);
  33.             sw.Reset();
  34.             Console.Write("{0,40}", "Poping from Stack...");
  35.             sw.Start();
  36.             for (int i = 0; i < 100000; i++)
  37.             {
  38.                 dummy = stack.Pop();
  39.                 dummy++;
  40.             }
  41.             sw.Stop();
  42.             Console.WriteLine("  Time used: {0,9} ticks\n", sw.ElapsedTicks);
  43.  
  44.  
  45.             sw.Reset();
  46.             Console.Write("{0,40}", "Enqueue to Queue...");
  47.             sw.Start();
  48.             for (int i = 0; i < 100000; i++)
  49.             {
  50.                 queue.Enqueue(rand.Next());
  51.             }
  52.             sw.Stop();
  53.             Console.WriteLine("  Time used: {0,9} ticks", sw.ElapsedTicks);
  54.             sw.Reset();
  55.             Console.Write("{0,40}", "Dequeue from Queue...");
  56.             sw.Start();
  57.             for (int i = 0; i < 100000; i++)
  58.             {
  59.                 dummy = queue.Dequeue();
  60.                 dummy++;
  61.             }
  62.             sw.Stop();
  63.             Console.WriteLine("  Time used: {0,9} ticks\n", sw.ElapsedTicks);
  64.  
  65.  
  66.             sw.Reset();
  67.             Console.Write("{0,40}", "Insert to List at the front...");
  68.             sw.Start();
  69.             for (int i = 0; i < 100000; i++)
  70.             {
  71.                 list1.Insert(0, rand.Next());
  72.             }
  73.             sw.Stop();
  74.             Console.WriteLine("  Time used: {0,9} ticks", sw.ElapsedTicks);
  75.             sw.Reset();
  76.             Console.Write("{0,40}", "RemoveAt from List at the front...");
  77.             sw.Start();
  78.             for (int i = 0; i < 100000; i++)
  79.             {
  80.                 dummy = list1[0];
  81.                 list1.RemoveAt(0);
  82.                 dummy++;
  83.             }
  84.             sw.Stop();
  85.             Console.WriteLine("  Time used: {0,9} ticks\n", sw.ElapsedTicks);
  86.  
  87.  
  88.             sw.Reset();
  89.             Console.Write("{0,40}", "Add to List at the end...");
  90.             sw.Start();
  91.             for (int i = 0; i < 100000; i++)
  92.             {
  93.                 list2.Add(rand.Next());
  94.             }
  95.             sw.Stop();
  96.             Console.WriteLine("  Time used: {0,9} ticks", sw.ElapsedTicks);
  97.             sw.Reset();
  98.             Console.Write("{0,40}", "RemoveAt from List at the end...");
  99.             sw.Start();
  100.             for (int i = 0; i < 100000; i++)
  101.             {
  102.                 dummy = list2[list2.Count - 1];
  103.                 list2.RemoveAt(list2.Count - 1);
  104.                 dummy++;
  105.             }
  106.             sw.Stop();
  107.             Console.WriteLine("  Time used: {0,9} ticks\n", sw.ElapsedTicks);
  108.  
  109.  
  110.             sw.Reset();
  111.             Console.Write("{0,40}", "AddFirst to LinkedList...");
  112.             sw.Start();
  113.             for (int i = 0; i < 100000; i++)
  114.             {
  115.                 linkedlist1.AddFirst(rand.Next());
  116.             }
  117.             sw.Stop();
  118.             Console.WriteLine("  Time used: {0,9} ticks", sw.ElapsedTicks);
  119.             sw.Reset();
  120.             Console.Write("{0,40}", "RemoveFirst from LinkedList...");
  121.             sw.Start();
  122.             for (int i = 0; i < 100000; i++)
  123.             {
  124.                 dummy = linkedlist1.First();
  125.                 linkedlist1.RemoveFirst();
  126.                 dummy++;
  127.             }
  128.             sw.Stop();
  129.             Console.WriteLine("  Time used: {0,9} ticks\n", sw.ElapsedTicks);
  130.  
  131.  
  132.             sw.Reset();
  133.             Console.Write("{0,40}", "AddLast to LinkedList...");
  134.             sw.Start();
  135.             for (int i = 0; i < 100000; i++)
  136.             {
  137.                 linkedlist2.AddLast(rand.Next());
  138.             }
  139.             sw.Stop();
  140.             Console.WriteLine("  Time used: {0,9} ticks", sw.ElapsedTicks);
  141.             sw.Reset();
  142.             Console.Write("{0,40}", "RemoveLast from LinkedList...");
  143.             sw.Start();
  144.             for (int i = 0; i < 100000; i++)
  145.             {
  146.                 dummy = linkedlist2.Last();
  147.                 linkedlist2.RemoveLast();
  148.                 dummy++;
  149.             }
  150.             sw.Stop();
  151.             Console.WriteLine("  Time used: {0,9} ticks\n", sw.ElapsedTicks);
  152.         }
  153.     }
  154. }