static void Main() { int reps = 10000000; var sl = new SortedList <int, int>(); var rd = new RankedDictionary <int, int>(); var watch = new Stopwatch(); Console.WriteLine("Loading SortedList..."); for (int ix = 0; ix <= reps; ++ix) { sl.Add(ix, -ix); } Console.WriteLine("Loading RankedDictionary..."); for (int i = 0; i <= reps; ++i) { rd.Add(i, -i); } Thread.Sleep(500); Console.WriteLine("Get Element at Index"); Console.WriteLine("Time in Milliseconds"); Console.WriteLine("Index by " + (reps / 10)); Console.WriteLine("Count;row;SortedList;RankedDictionary"); for (int row = 0, ix = 0; ix <= reps; ix += reps / 10) { watch.Reset(); watch.Start(); var slPair = sl.ElementAt(ix); var slTime = watch.ElapsedMilliseconds; if (slPair.Key != -slPair.Value) { Console.Write("FAIL"); } watch.Reset(); watch.Start(); var rdPair = rd.ElementAt(ix); var rdTime = watch.ElapsedMilliseconds; if (rdPair.Key != -rdPair.Value) { Console.Write("FAIL"); } var lx = String.Format($"{ix,9};{row,4};{slTime,5};{rdTime,5}"); if (row > 0) { Console.WriteLine(lx); } ++row; } watch.Reset(); watch.Start(); var slPair2 = sl.Last(); var slTime2 = watch.ElapsedMilliseconds; if (slPair2.Key != -slPair2.Value) { Console.Write("FAIL"); } watch.Reset(); watch.Start(); var rdPair2 = rd.Last(); var rdTime2 = watch.ElapsedMilliseconds; if (rdPair2.Key != -rdPair2.Value) { Console.Write("FAIL"); } var lx2 = String.Format($"{reps,9};Last;{slTime2,5};{rdTime2,5}"); Console.WriteLine(lx2); }