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