コード例 #1
0
        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);
            }
        }
コード例 #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();
            }
        }