public void PopulateDFAWithXAndEpsilonTransitions_PerformanceTests(int states)
        {
            var automaton  = PerformanceTestingUtility.CreateLargeAutomataWithRandomTransitions(Constants.RegularLanguage.Symbols, states);
            var automaton2 = automaton.Clone();

            PerformanceTestingUtility.AssertAutomatonEqual(automaton, automaton2);

            var sw = Stopwatch.StartNew();

#pragma warning disable 612, 618
            var naivePopulatedAutomaton = automaton.PopulateDFAWithXAndEpsilonTransitionsNaive();
#pragma warning restore 612, 618

            sw.Stop();
            var naiveTime = sw.ElapsedMilliseconds;


            sw = Stopwatch.StartNew();
            var queuePopulatedAutomaton = automaton2.PopulateDFAWithXAndEpsilonTransitionsQueueBased();
            sw.Stop();
            var queueTime = sw.ElapsedMilliseconds;

            // Ensure that the automatons created are equal.
            PerformanceTestingUtility.AssertAutomatonEqual(naivePopulatedAutomaton, queuePopulatedAutomaton);

            _output.WriteLine($"Naive Method: {naiveTime}ms");
            _output.WriteLine($"Queue Method: {queueTime}ms");
        }
Exemple #2
0
        public void Minimize_PerformanceTests()
        {
            var automaton          = PerformanceTestingUtility.CreateLargeAutomataWithRandomTransitions(_alphabet, 10000);
            var sw                 = Stopwatch.StartNew();
            var minimizedAutomaton = automaton.MinimizeDFA();

            sw.Stop();
            _output.WriteLine($"Minimization performed in {sw.ElapsedMilliseconds}ms");
            _output.WriteLine($"The minized automaton had {minimizedAutomaton.States.Count} states");
        }
        public void PopulateDFAWithXAndEpsilonTransitions_PerformanceTests_QueueBasedOnly()
        {
            var automaton = PerformanceTestingUtility.CreateLargeAutomataWithRandomTransitions(Constants.RegularLanguage.Symbols, 300);

            var sw = Stopwatch.StartNew();
            var queuePopulatedAutomaton = automaton.PopulateDFAWithXAndEpsilonTransitionsQueueBased();

            sw.Stop();
            var queueTime = sw.ElapsedMilliseconds;

            _output.WriteLine($"Queue Method: {queueTime}ms");
        }