示例#1
0
        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();
        }
示例#2
0
        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();
        }