public void MemoryDiagnoserTracksHeapMemoryAllocation()
        {
            var benchmarks      = BenchmarkConverter.TypeToBenchmarks(typeof(ListEnumeratorsBenchmarks));
            var memoryDiagnoser = new Diagnostics.Windows.MemoryDiagnoser();

            var summary = BenchmarkRunner
                          .Run(benchmarks,
                               ManualConfig.CreateEmpty()
                               .With(Job.Dry.With(Runtime.Core).With(Jit.Host).With(Mode.Throughput).WithWarmupCount(1).WithTargetCount(1))
                               .With(DefaultConfig.Instance.GetLoggers().ToArray())
                               .With(DefaultConfig.Instance.GetColumns().ToArray())
                               .With(memoryDiagnoser)
                               .With(new OutputLogger(output)));

            var       gcCollectionColumns            = memoryDiagnoser.GetColumns.OfType <Diagnostics.Windows.MemoryDiagnoser.GCCollectionColumn>().ToArray();
            var       listStructEnumeratorBenchmarks = benchmarks.Where(benchmark => benchmark.ShortInfo.Contains("ListStructEnumerator"));
            var       listObjectEnumeratorBenchmarks = benchmarks.Where(benchmark => benchmark.ShortInfo.Contains("ListObjectEnumerator"));
            const int gen0Index = 0;

            foreach (var listStructEnumeratorBenchmark in listStructEnumeratorBenchmarks)
            {
                var structEnumeratorGen0Collections = gcCollectionColumns[gen0Index].GetValue(
                    summary,
                    listStructEnumeratorBenchmark);

                Assert.Equal("-", structEnumeratorGen0Collections);
            }

            foreach (var listObjectEnumeratorBenchmark in listObjectEnumeratorBenchmarks)
            {
                var gen0Str = gcCollectionColumns[gen0Index].GetValue(
                    summary,
                    listObjectEnumeratorBenchmark);

                double gen0Value;
                if (double.TryParse(gen0Str, NumberStyles.Number, HostEnvironmentInfo.MainCultureInfo, out gen0Value))
                {
                    Assert.True(gen0Value > 0);
                }
                else
                {
                    Assert.True(false, $"Can't parse '{gen0Str}'");
                }
            }
        }
        public void MemoryDiagnoserTracksHeapMemoryAllocation()
        {
            var benchmarks = BenchmarkConverter.TypeToBenchmarks(typeof(ListEnumeratorsBenchmarks));
            var memoryDiagnoser = new Diagnostics.Windows.MemoryDiagnoser();

            var summary = BenchmarkRunner
                .Run(benchmarks,
                    ManualConfig.CreateEmpty()
                        .With(Job.Dry.With(Runtime.Core).With(Jit.Host).With(Mode.Throughput).WithWarmupCount(1).WithTargetCount(1))
                        .With(DefaultConfig.Instance.GetLoggers().ToArray())
                        .With(DefaultConfig.Instance.GetColumns().ToArray())
                        .With(memoryDiagnoser)
                        .With(new OutputLogger(output)));

            var gcCollectionColumns = memoryDiagnoser.GetColumns.OfType<Diagnostics.Windows.MemoryDiagnoser.GCCollectionColumn>().ToArray();
            var listStructEnumeratorBenchmarks = benchmarks.Where(benchmark => benchmark.ShortInfo.Contains("ListStructEnumerator"));
            var listObjectEnumeratorBenchmarks = benchmarks.Where(benchmark => benchmark.ShortInfo.Contains("ListObjectEnumerator"));
            const int gen0Index = 0;

            foreach (var listStructEnumeratorBenchmark in listStructEnumeratorBenchmarks)
            {
                var structEnumeratorGen0Collections = gcCollectionColumns[gen0Index].GetValue(
                    summary,
                    listStructEnumeratorBenchmark);

                Assert.Equal("-", structEnumeratorGen0Collections);
            }

            foreach (var listObjectEnumeratorBenchmark in listObjectEnumeratorBenchmarks)
            {
                var gen0Str = gcCollectionColumns[gen0Index].GetValue(
                    summary,
                    listObjectEnumeratorBenchmark);

                double gen0Value;
                if (double.TryParse(gen0Str, NumberStyles.Number, HostEnvironmentInfo.MainCultureInfo, out gen0Value))
                    Assert.True(gen0Value > 0);
                else
                {
                    Assert.True(false, $"Can't parse '{gen0Str}'");
                }
            }
        }
Esempio n. 3
0
        public void Test()
        {
            var benchmarks      = BenchmarkConverter.TypeToBenchmarks(typeof(ListEnumeratorsBenchmarks));
            var memoryDiagnoser = new Diagnostics.Windows.MemoryDiagnoser();

            var summary = BenchmarkRunner
                          .Run(benchmarks,
                               ManualConfig.CreateEmpty()
                               .With(Job.Dry.With(Runtime.Dnx).With(Jit.Host).With(Mode.Throughput).WithWarmupCount(1).WithTargetCount(1))
                               .With(Job.Dry.With(Runtime.Core).With(Jit.Host).With(Mode.Throughput).WithWarmupCount(1).WithTargetCount(1))
                               .With(DefaultConfig.Instance.GetLoggers().ToArray())
                               .With(DefaultConfig.Instance.GetColumns().ToArray())
                               .With(memoryDiagnoser));

            var       gcCollectionColumns            = memoryDiagnoser.GetColumns.OfType <Diagnostics.Windows.MemoryDiagnoser.GCCollectionColumn>().ToArray();
            var       listStructEnumeratorBenchmarks = benchmarks.Where(benchmark => benchmark.ShortInfo.Contains("ListStructEnumerator"));
            var       listObjectEnumeratorBenchmarks = benchmarks.Where(benchmark => benchmark.ShortInfo.Contains("ListObjectEnumerator"));
            const int gen0Index = 0;

            foreach (var listStructEnumeratorBenchmark in listStructEnumeratorBenchmarks)
            {
                var structEnumeratorGen0Collections = gcCollectionColumns[gen0Index].GetValue(
                    summary,
                    listStructEnumeratorBenchmark);

                Assert.Equal("-", structEnumeratorGen0Collections);
            }

            foreach (var listObjectEnumeratorBenchmark in listObjectEnumeratorBenchmarks)
            {
                var objectEnumeratorGen0Collections = gcCollectionColumns[gen0Index].GetValue(
                    summary,
                    listObjectEnumeratorBenchmark);

                Assert.True(double.Parse(objectEnumeratorGen0Collections) > 0);
            }
        }
        public void Test()
        {
            var benchmarks = BenchmarkConverter.TypeToBenchmarks(typeof(ListEnumeratorsBenchmarks));
            var memoryDiagnoser = new Diagnostics.Windows.MemoryDiagnoser();

            var summary = BenchmarkRunner
                .Run(benchmarks, 
                    ManualConfig.CreateEmpty()
                        .With(Job.Dry.With(Runtime.Dnx).With(Jit.Host).With(Mode.Throughput).WithWarmupCount(1).WithTargetCount(1))
                        .With(Job.Dry.With(Runtime.Core).With(Jit.Host).With(Mode.Throughput).WithWarmupCount(1).WithTargetCount(1))
                        .With(DefaultConfig.Instance.GetLoggers().ToArray())
                        .With(DefaultConfig.Instance.GetColumns().ToArray())
                        .With(memoryDiagnoser));

            var gcCollectionColumns = memoryDiagnoser.GetColumns.OfType<Diagnostics.Windows.MemoryDiagnoser.GCCollectionColumn>().ToArray();
            var listStructEnumeratorBenchmarks = benchmarks.Where(benchmark => benchmark.ShortInfo.Contains("ListStructEnumerator"));
            var listObjectEnumeratorBenchmarks = benchmarks.Where(benchmark => benchmark.ShortInfo.Contains("ListObjectEnumerator"));
            const int gen0Index = 0;

            foreach (var listStructEnumeratorBenchmark in listStructEnumeratorBenchmarks)
            {
                var structEnumeratorGen0Collections = gcCollectionColumns[gen0Index].GetValue(
                    summary,
                    listStructEnumeratorBenchmark);

                Assert.Equal("-", structEnumeratorGen0Collections);
            }

            foreach (var listObjectEnumeratorBenchmark in listObjectEnumeratorBenchmarks)
            {
                var objectEnumeratorGen0Collections = gcCollectionColumns[gen0Index].GetValue(
                    summary,
                    listObjectEnumeratorBenchmark);

                Assert.True(double.Parse(objectEnumeratorGen0Collections) > 0);
            }
        }