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); }
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(); } }