private void ConfigureForm(string fileName) { int nCount, maxPower; PointF[][] results; results = FileWorker.ReadSortResultsFromFile(fileName, out maxPower, out nCount); float[] timeArray = new float[maxPower + 2]; for (int i = 0; i < maxPower + 2; i++) { timeArray[i] = results[i][nCount - 1].Y; } Point scale = SetScale( results[0][nCount - 1].X, MaxValue(timeArray)); for (int i = 0; i < nCount; i++) { for (int j = 0; j <= maxPower + 1; j++) { results[j][i] = new PointF(results[j][i].X / (float)Math.Pow(10, scale.X), results[j][i].Y / (float)Math.Pow(10, scale.Y)); } } listView1.Items.Add(new ListViewItem(string.Format("Scale: X - 1:{0} ; Y - 1:{1}", Math.Pow(10, scale.X), Math.Pow(10, scale.Y)))); for (int i = 0; i <= maxPower + 1; i++) { Color color = GetRandColor(); painter.DrawPath(painter.LinePathFromDots(results[i]), color, width, color, 0); painter.DrawPath(painter.DotsPathFromDots(results[i]), color, width, Color.White, 2.55); ListViewItem item = new ListViewItem(new string[1] { i == maxPower + 1 ? "Static sort" : string.Format("number of threads - {0}", Math.Pow(2, i)) }, 0, color, color, new Font(Font.SystemFontName, 10)); listView1.Items.Add(item); } }
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(); } }