Exemplo n.º 1
0
        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);
        }