using System; using BenchmarkDotNet.Configs; using BenchmarkDotNet.Jobs; using Perfolizer.Horology; namespace Umbraco.Tests.Benchmarks.Config { /// /// Configures the benchmark to run with less warmup and a shorter iteration time than the standard benchmark. /// [AttributeUsage(AttributeTargets.Class, AllowMultiple = false)] public class QuickRunConfigAttribute : Attribute, IConfigSource { /// /// Initializes a new instance of the class. /// public QuickRunConfigAttribute() { this.Config = (ManualConfig)ManualConfig.CreateEmpty() .With(Job.Default.WithLaunchCount(1) // benchmark process will be launched only once .WithIterationTime(new TimeInterval(100, TimeUnit.Millisecond)) // 100ms per iteration .WithWarmupCount(3) // 3 warmup iteration .WithIterationCount(3)); // 3 target iteration } /// /// Gets the manual configuration. /// protected ManualConfig Config { get; } /// IConfig IConfigSource.Config => this.Config; } }