public void RegexReplaceTheory(string prefix, string iterationPrefix, int iterations)
        {
            var pattern      = StringReplaceBenchmark.BuildPattern(prefix, iterationPrefix, iterations);
            var replacements = StringReplaceBenchmark.BuildReplacements(iterations);

            var regex = new Regex(@"@(\d+)");

            var stopwatch = new Stopwatch();

            stopwatch.Start();

            var result = regex.Replace(pattern, (match) => replacements[Convert.ToInt32(match.Groups[1].Value)]);

            stopwatch.Stop();

            Assert.DoesNotContain("@", result);

            fileReportFixture.Writer.WriteLine($"Regex.Replace;{iterations};{stopwatch.ElapsedMilliseconds};{stopwatch.ElapsedTicks}");
        }
        public void StringBuilderTheory(string prefix, string iterationPrefix, int iterations)
        {
            var pattern      = StringReplaceBenchmark.BuildPattern(prefix, iterationPrefix, iterations);
            var replacements = StringReplaceBenchmark.BuildReplacements(iterations);

            var resultBuilder = new StringBuilder(pattern);

            var stopwatch = new Stopwatch();

            stopwatch.Start();

            for (int i = 0; i < iterations; i++)
            {
                resultBuilder = resultBuilder.Replace($"@{i}", replacements[i]);
            }

            var result = resultBuilder.ToString();

            stopwatch.Stop();

            Assert.DoesNotContain("@", result);

            fileReportFixture.Writer.WriteLine($"StringBuilder.Replace;{iterations};{stopwatch.ElapsedMilliseconds};{stopwatch.ElapsedTicks}");
        }