benchmarks/Elastic.Apm.Benchmarks/MetricsBenchmarks.cs (59 lines of code) (raw):

// Licensed to Elasticsearch B.V under one or more agreements. // Elasticsearch B.V licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information using System.Collections.Generic; using BenchmarkDotNet.Attributes; using Elastic.Apm.Config; using Elastic.Apm.Helpers; using Elastic.Apm.Metrics; using Elastic.Apm.Metrics.MetricsProvider; using Elastic.Apm.Tests.Utilities; namespace Elastic.Apm.Benchmarks { [MemoryDiagnoser] public class MetricsBenchmarks { private MetricsCollector _metricsCollector; [GlobalSetup(Target = nameof(CollectAllMetrics2X))] public void SetUpForAllMetrics() { var noopLogger = new NoopLogger(); var mockPayloadSender = new MockPayloadSender(); _metricsCollector = new MetricsCollector(noopLogger, mockPayloadSender, new ConfigurationStore(new MockConfiguration(noopLogger), noopLogger)); } [GlobalCleanup(Target = nameof(CollectAllMetrics2X))] public void CleanUpForAllMetrics() => _metricsCollector?.Dispose(); [Benchmark] public void CollectAllMetrics2X() { _metricsCollector.CollectAllMetrics(); _metricsCollector.CollectAllMetrics(); } [Benchmark] public void CollectProcessTotalCpuTime2X() { var mockPayloadSender = new ProcessTotalCpuTimeProvider(new NoopLogger()); mockPayloadSender.GetSamples(); mockPayloadSender.GetSamples(); } [Benchmark] public void CollectTotalCpuTime2X() { var systemTotalCpuProvider = new SystemTotalCpuProvider(new NoopLogger()); systemTotalCpuProvider.GetSamples(); systemTotalCpuProvider.GetSamples(); } [Benchmark] public void CollectTotalAndFreeMemory2X() { var mockPayloadSender = new FreeAndTotalMemoryProvider(new NoopLogger(), new List<WildcardMatcher>()); mockPayloadSender.GetSamples(); mockPayloadSender.GetSamples(); } [Benchmark] public void CollectWorkingSetAndVirMem2X() { var mockPayloadSender = new ProcessWorkingSetAndVirtualMemoryProvider(new List<WildcardMatcher>()); mockPayloadSender.GetSamples(); mockPayloadSender.GetSamples(); } } }