Example #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();
        }
        public void Benchmarking_CPU_is_less_precise_that_time()
        {
            int Fib(int n)
            {
                return(n <= 0 ? n : Fib(n - 1) + Fib(n - 2));
            }

            BenchmarkResult r1 = CK.Core.MicroBenchmark.MeasureCPU(() => Fib(10));
            BenchmarkResult r2 = CK.Core.MicroBenchmark.MeasureCPU(() => Fib(15));

            r1.IsBetterThan(r2).Should().BeTrue();
            r1.IsSignificantlyBetterThan(r2).Should().BeTrue();
            r1.IsTotallyBetterThan(r2).Should().BeTrue();
        }
        public void Benchmarking_timed_operations()
        {
            int Fib(int n)
            {
                return(n <= 0 ? n : Fib(n - 1) + Fib(n - 2));
            }

            BenchmarkResult r1 = CK.Core.MicroBenchmark.MeasureTime(() => Fib(10));
            BenchmarkResult r2 = CK.Core.MicroBenchmark.MeasureTime(() => Fib(11));

            r1.IsBetterThan(r2).Should().BeTrue();
            r1.IsSignificantlyBetterThan(r2).Should().BeTrue();
            r1.IsTotallyBetterThan(r2).Should().BeTrue();
        }