예제 #1
0
        public static void Clear(int initialSetSize)
        {
            RandomTGenerator <int> intGenerator = new RandomTGenerator <int>(InstanceCreators.IntGenerator);

            int[]         startingSet = intGenerator.MakeNewTs(initialSetSize);
            HashSet <int> theSet      = new HashSet <int>();

            foreach (var iteration in Benchmark.Iterations)
            {
                theSet.UnionWith(startingSet);

                using (iteration.StartMeasurement())
                    theSet.Clear();
            }
        }
예제 #2
0
        public static void TestIsProperSupersetEnum()
        {
            RandomTGenerator <int> intGenerator = new RandomTGenerator <int>(InstanceCreators.IntGenerator);

            int[]         startingElements           = intGenerator.MakeNewTs(MaxStartSize);
            int[]         stuffToCheckProperSuperset = intGenerator.GenerateSelectionSubset(startingElements, InitialSetSize_small);
            HashSet <int> theSet = new HashSet <int>();

            theSet.UnionWith(startingElements);

            foreach (var iteration in Benchmark.Iterations)
            {
                using (iteration.StartMeasurement())
                    theSet.IsProperSupersetOf(stuffToCheckProperSuperset);
            }
        }
예제 #3
0
        public static void Union_NoOp(int startSize, int countToUnion)
        {
            RandomTGenerator <int> intGenerator = new RandomTGenerator <int>(InstanceCreators.IntGenerator);

            int[]         startingElements = intGenerator.MakeNewTs(MaxStartSize);
            int[]         stuffToUnion     = intGenerator.GenerateMixedSelection(startingElements, countToUnion);
            HashSet <int> theSet           = new HashSet <int>(startingElements);

            theSet.UnionWith(stuffToUnion);

            foreach (var iteration in Benchmark.Iterations)
            {
                using (iteration.StartMeasurement())
                    theSet.UnionWith(stuffToUnion);
            }
        }
예제 #4
0
        public static void SymmetricExceptEnum(int startSize, int countToExcept)
        {
            RandomTGenerator <int> intGenerator = new RandomTGenerator <int>(InstanceCreators.IntGenerator);

            int[]         startingElements = intGenerator.MakeNewTs(startSize);
            int[]         stuffToExcept    = intGenerator.GenerateMixedSelection(startingElements, countToExcept);
            HashSet <int> theSet           = new HashSet <int>();

            foreach (var iteration in Benchmark.Iterations)
            {
                theSet.UnionWith(startingElements);

                using (iteration.StartMeasurement())
                    theSet.SymmetricExceptWith(stuffToExcept);

                theSet.Clear();
            }
        }
예제 #5
0
        public static void Remove(int initialSetSize, int countToRemove)
        {
            RandomTGenerator <int> intGenerator = new RandomTGenerator <int>(InstanceCreators.IntGenerator);

            int[] startingElements = intGenerator.MakeNewTs(initialSetSize);
            int[] stuffToRemove    = intGenerator.GenerateSelectionSubset(startingElements, countToRemove);

            foreach (var iteration in Benchmark.Iterations)
            {
                HashSet <int> theSet = new HashSet <int>(startingElements);

                using (iteration.StartMeasurement())
                {
                    foreach (int thing in stuffToRemove)
                    {
                        theSet.Remove(thing);
                    }
                }
            }
        }
예제 #6
0
        public static void Contains_False(int initialSetSize, int countToCheck)
        {
            RandomTGenerator <int> intGenerator = new RandomTGenerator <int>(InstanceCreators.IntGenerator);

            int[] startingElements = intGenerator.MakeNewTs(initialSetSize);
            int   missingValue     = InstanceCreators.IntGenerator_MaxValue + 1;
            bool  present;

            foreach (var iteration in Benchmark.Iterations)
            {
                HashSet <int> theSet = new HashSet <int>(startingElements);

                using (iteration.StartMeasurement())
                {
                    for (int i = 0; i < countToCheck; i++)
                    {
                        present = theSet.Contains(missingValue);
                    }
                }
            }
        }
예제 #7
0
        public static void Contains_True(int initialSetSize, int countToCheck)
        {
            RandomTGenerator <int> intGenerator = new RandomTGenerator <int>(InstanceCreators.IntGenerator);

            int[] startingElements = intGenerator.MakeNewTs(initialSetSize);
            int[] subsetToCheck    = intGenerator.GenerateSelectionSubset(startingElements, countToCheck);
            bool  present;

            foreach (var iteration in Benchmark.Iterations)
            {
                HashSet <int> theSet = new HashSet <int>(startingElements);

                using (iteration.StartMeasurement())
                {
                    foreach (int thing in subsetToCheck)
                    {
                        present = theSet.Contains(thing);
                    }
                }
            }
        }
예제 #8
0
        public static void TestIsProperSubsetHashSet()
        {
            RandomTGenerator <int> intGenerator = new RandomTGenerator <int>(InstanceCreators.IntGenerator);

            int[]         startingElements = intGenerator.MakeNewTs(InitialSetSize_small);
            HashSet <int> theSet           = new HashSet <int>();

            theSet.UnionWith(startingElements);

            // this makes perf as bad as possible; avoids fallout case based on count
            int[]         additionalStuffToAdd = intGenerator.MakeNewTs(Math.Max(0, InitialSetSize_small - theSet.Count));
            HashSet <int> setToCheckSubset     = new HashSet <int>(startingElements);

            setToCheckSubset.UnionWith(additionalStuffToAdd);

            foreach (var iteration in Benchmark.Iterations)
            {
                using (iteration.StartMeasurement())
                    theSet.IsProperSubsetOf(setToCheckSubset);
            }
        }
예제 #9
0
        public static void Add(int initialSetSize, int countToAdd)
        {
            RandomTGenerator <int> intGenerator = new RandomTGenerator <int>(InstanceCreators.IntGenerator);

            // n is varying start size of set
            int[] startingElements = intGenerator.MakeNewTs(initialSetSize);
            int[] stuffToAdd       = intGenerator.MakeNewTs(countToAdd);

            foreach (var iteration in Benchmark.Iterations)
            {
                HashSet <int> theSet = new HashSet <int>(startingElements);

                using (iteration.StartMeasurement())
                {
                    foreach (int thing in stuffToAdd)
                    {
                        theSet.Add(thing);
                    }
                }
            }
        }