コード例 #1
0
        private static void AnalyzeSortAlgorithm(Action <int[]>[] algorithms, string fileName)
        {
            List <Tuple <int, int, long> > results = new List <Tuple <int, int, long> >();
            Stopwatch wtch = new Stopwatch();

            for (int j = minCount; j <= maxCount; j += step)
            {
                int[] array = GenerateRandomArray(j);

                for (int i = 0; i <= maxPower + 1; i++)
                {
                    long time = 0;

                    for (int p = 0; p < experimentCount; p++)
                    {
                        int[] copyArr = new int[j];
                        array.CopyTo(copyArr, 0);
                        wtch.Reset();
                        wtch.Start();
                        algorithms[i](copyArr);
                        wtch.Stop();

                        time += wtch.ElapsedMilliseconds;
                    }


                    results.Add(new Tuple <int, int, long>(j, i == maxPower + 1 ? -1 : i, time / experimentCount));
                }
            }

            FileWorker.WriteSortResultsInFile(results, fileName, (maxCount - minCount) / step + 1, maxPower);
        }
コード例 #2
0
        private void button4_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd1 = new OpenFileDialog(),
                           ofd2 = new OpenFileDialog();

            ofd1.Title = "Choose non-optimized parallel sort results";
            ofd2.Title = "Choose optimized parallel sort results";

            if (ofd1.ShowDialog() == DialogResult.OK &&
                ofd2.ShowDialog() == DialogResult.OK)
            {
                int nCount1, maxPower1,
                    nCount2, maxPower2;
                PointF[][] res1, res2;

                res1 = FileWorker.ReadSortResultsFromFile(ofd1.FileName, out maxPower1, out nCount1);
                res2 = FileWorker.ReadSortResultsFromFile(ofd2.FileName, out maxPower2, out nCount2);

                if (nCount1 != nCount2 ||
                    maxPower2 != maxPower1)
                {
                    MessageBox.Show("Incorrect files!");
                    return;
                }

                List <Tuple <int, int, long> > list = new List <Tuple <int, int, long> >();
                for (int j = 0; j < nCount1; j++)
                {
                    for (int i = 0; i < maxPower1 + 2; i++)
                    {
                        list.Add(new Tuple <int, int, long>((int)res1[i][j].X, i == maxPower1 + 1 ? -1 : i, (long)(res1[i][j].Y - res2[i][j].Y)));
                    }
                }

                FileWorker.WriteSortResultsInFile(list, "difference.txt", nCount1, maxPower1);
                new Graphic("difference.txt").Show();
            }
        }