public void benchmark() { const int HeapSize = 5000; int[] randomValues = Enumerable.Range(0, 100000).Select(_ => _random.Next()).ToArray(); BenchmarkResult r1 = MicroBenchmark.MeasureTime(() => { BestKeeper <int> sut = new BestKeeper <int>(HeapSize, (n1, n2) => n1 - n2); for (int i = 0; i < randomValues.Length; i++) { sut.Add(randomValues[i]); } }, 100); BenchmarkResult r2 = MicroBenchmark.MeasureTime(() => { OrderedArrayBestKeeper <int> sut = new OrderedArrayBestKeeper <int>(HeapSize, (n1, n2) => n1 - n2); for (int i = 0; i < randomValues.Length; i++) { sut.Add(randomValues[i]); } }, 100); r1.IsSignificantlyBetterThan(r2).Should().BeTrue(); }
public void our_Concatenate_to_string_must_use_String_Join_since_it_is_faster() { string ConcatenateCandidate(IEnumerable <string> @this, string separator = ", ") { return(new StringBuilder().AppendStrings(@this, separator).ToString()); } string text = File.ReadAllText(Path.Combine(TestHelper.SolutionFolder, "Tests/CK.Text.Tests/StringAndStringBuilderExtensionTests.cs")) .NormalizeEOLToLF(); var lines = text.Split('\n'); var words = text.Split(' ', '\n'); var rJoinLines = MicroBenchmark.MeasureTime(() => String.Join(", ", lines)); var rJoinWords = MicroBenchmark.MeasureTime(() => String.Join(", ", words)); var rConcatLines = MicroBenchmark.MeasureTime(() => ConcatenateCandidate(lines)); var rConcatWords = MicroBenchmark.MeasureTime(() => ConcatenateCandidate(words)); rJoinLines.IsSignificantlyBetterThan(rConcatLines).Should().BeTrue(); rJoinWords.IsSignificantlyBetterThan(rConcatWords).Should().BeTrue(); var smallSet = lines.Take(20).ToArray(); var rConcatSmall = MicroBenchmark.MeasureTime(() => ConcatenateCandidate(smallSet)); var rJoinSmall = MicroBenchmark.MeasureTime(() => String.Join(", ", smallSet)); rJoinSmall.IsSignificantlyBetterThan(rConcatSmall).Should().BeTrue(); }