Exemplo n.º 1
0
        private void cv01btnBenchmark_Click_1(object sender, EventArgs e)
        {
            int LASTTOMEASURE = 11;
            Dictionary<int, float> times = new Dictionary<int, float>();

            cv01txtBenchmark.Text = "";
            task01 = new Task01(GUI.GetWidth(), GUI.GetHeight(), GUI.GetPointSize());

            //run one simple benchmark to avoid startup delays in statistics
            task01.GeneratePoints(3);
            task01.Benchmark(null);

            for (int i = 3; i <= LASTTOMEASURE; i++)
            {
                task01.GeneratePoints(i);
                cv01txtBenchmark.Text += String.Format("Starting benchmark for {0} points...\r\n", i);
                cv01txtBenchmark.ScrollToCaret();
                cv01txtBenchmark.Refresh();
                Stopwatch s = new Stopwatch();
                StringBuilder sb = new StringBuilder();
                s.Start();

                bool debugmode = false;
                if (task01.Points.Count < 8 && debugmode)
                    task01.Benchmark(sb); //debug mode
                else
                    task01.Benchmark(null); //no debug mode

                s.Stop();
                double ms = s.Elapsed.TotalMilliseconds;
                cv01txtBenchmark.Text += sb.ToString();
                cv01txtBenchmark.Text += String.Format("Benchmark for {0} points finished in {1} ms.\r\n", i, ms);
                cv01txtBenchmark.ScrollToCaret();
                cv01txtBenchmark.Refresh();
                times[i] = (float)Math.Round(ms / 1000, 3);
                chart.Plot(times);
                chart.Refresh();
            }
            //estimate the rest
            for (int i = LASTTOMEASURE + 1; i <= 15; i++)
            {
                times[i] = times[(i - 1)] * i;
                chart.Plot(times);
                cv01txtBenchmark.Text += String.Format("Approximated results for {0} points: {1} ms.\r\n", i, times[i] * 1000);
                chart.Refresh();
            }
            chart.Plot(times);
        }