예제 #1
0
        static void RepeatableTest(int imageSizeStep, int testRepeats, int numberOfTests)
        {
            List <string> lines = new List <string>(numberOfTests * 9);

            for (int i = 1; i <= numberOfTests; i++)
            {
                for (int f = 3; f <= 21; f += 2)
                {
                    StringBuilder builder = new StringBuilder();
                    builder.Append($"{ i * imageSizeStep };{ f };");

                    for (int l = 0; l < testRepeats; l++)
                    {
                        Graymap graymap = Generator.HorizontalStripes(i * imageSizeStep, i * imageSizeStep, new int[] { 0, 255 }, imageSizeStep / 5);

                        Stopwatch stopwatch = new Stopwatch();
                        stopwatch.Start();
                        Filtering.ApplyFilter(graymap, GraymapLibrary.Filters.Generator.GetGaussianBlur(f));
                        stopwatch.Stop();

                        builder.Append($"{ stopwatch.ElapsedMilliseconds };");
                        Console.WriteLine($"Blur size: { f.ToString("D2") } | Image size: { i * imageSizeStep } | Regular iteration: { stopwatch.ElapsedMilliseconds }ms");
                    }

                    lines.Add(builder.ToString().Substring(0, builder.ToString().Length - 1));
                }
            }

            File.WriteAllLines("regular.csv", lines.ToArray());

            //=======================================================================================================================

            lines = new List <string>(numberOfTests * 9);

            for (int i = 1; i <= numberOfTests; i++)
            {
                for (int f = 3; f <= 21; f += 2)
                {
                    StringBuilder builder = new StringBuilder();
                    builder.Append($"{ i * imageSizeStep };{ f };");

                    for (int l = 0; l < testRepeats; l++)
                    {
                        Graymap graymap = Generator.HorizontalStripes(i * imageSizeStep, i * imageSizeStep, new int[] { 0, 255 }, imageSizeStep / 4);

                        Stopwatch stopwatch = new Stopwatch();
                        stopwatch.Start();
                        Filtering.ApplyFilterParallel(graymap, GraymapLibrary.Filters.Generator.GetGaussianBlur(f));
                        stopwatch.Stop();

                        builder.Append($"{ stopwatch.ElapsedMilliseconds };");
                        Console.WriteLine($"Blur size: { f.ToString("D2") } | Image size: { i * imageSizeStep } | Parallel iteration: { stopwatch.ElapsedMilliseconds }ms");
                    }

                    lines.Add(builder.ToString().Substring(0, builder.ToString().Length - 1));
                }
            }

            File.WriteAllLines("parallel.csv", lines.ToArray());
        }