Example #1
0
        static void Main()
        {
            var watch = new Stopwatch();

            Console.WriteLine("RankedSet Bulk Add and indexing");
            Console.WriteLine($"{divs} increments of {(reps / divs)}");
            Console.WriteLine("RankedSet Size;SortedSet Size;RankedSet Add;SortedSet Add;RankedSet ElementAt;SortedSet ELementAt;RankedSetLast;SortedSet Last");

            for (int k1 = 0; k1 <= divs; ++k1)
            {
                int reps0 = k1 == 0 ? reps : (reps / divs) * k1;
                rs.Clear();
                System.Threading.Thread.Sleep(200);

                watch.Reset(); watch.Start();
                for (int ix = 0; ix < reps0; ++ix)
                {
                    rs.Add(ix);
                }
                var loadRs = watch.ElapsedMilliseconds;

                ss.Clear();
                System.Threading.Thread.Sleep(200);
                watch.Reset(); watch.Start();
                for (int ix = 0; ix < reps0; ++ix)
                {
                    ss.Add(ix);
                }
                var loadSs = watch.ElapsedMilliseconds;

                watch.Reset(); watch.Start();
                var ss1    = ss.Last();
                var lastSs = watch.ElapsedMilliseconds;
                watch.Reset(); watch.Start();
                var ss2    = ss.ElementAt(reps0 - 1);
                var elAtSs = watch.ElapsedMilliseconds;

                watch.Reset(); watch.Start();
                var rs1    = rs.Last();
                var lastRs = watch.ElapsedMilliseconds;
                watch.Reset(); watch.Start();
                var rs2    = rs.ElementAt(reps0 - 1);
                var elAtRs = watch.ElapsedMilliseconds;

                if (k1 > 0)
                {
                    Console.WriteLine($"{rs.Count,8};{ss.Count,8};{loadRs,5};{loadSs,5};{lastRs,2};{lastSs,4};{elAtRs,2};{elAtSs,4}");
                }
            }
        }
Example #2
0
        static void Main()
        {
            int  maxN    = 500000;
            var  watch   = new Stopwatch();
            bool isPass1 = true;

            Console.WriteLine("Removals in Thousands,Set Size in Thousands,RankedSet,SortedSet");

            for (int n = maxN / 10; n <= maxN;)
            {
                var c1 = new RankedSet <int>();
                for (int i = 0; i < n; ++i)
                {
                    c1.Add(i);
                }
                watch.Reset(); watch.Start();
                c1.RemoveWhere(IsCull);
                var c1Time  = watch.ElapsedMilliseconds;
                int c1Count = c1.Count; c1.Clear();

                var c2 = new SortedSet <int>();
                for (int i = 0; i < n; ++i)
                {
                    c2.Add(i);
                }
                watch.Reset(); watch.Start();
                c2.RemoveWhere(IsCull);
                var c2Time  = watch.ElapsedMilliseconds;
                int c2Count = c2.Count; c2.Clear();

                int removes = n * division / divisionCount;
                if (c1Count != n - removes || c2Count != n - removes)
                {
                    Console.WriteLine($"*** ERROR *** {c1Count}, {c2Count}");
                }

                if (isPass1)
                {
                    isPass1 = false;
                }
                else
                {
                    Console.WriteLine($"{removes/1000},{n/1000},{c1Time},{c2Time}");
                    n += maxN / 10;
                }
            }
        }