diff --git a/docs/articles/samples/IntroSetupCleanupIteration.md b/docs/articles/samples/IntroSetupCleanupIteration.md index efb811da1f..c124062fd3 100644 --- a/docs/articles/samples/IntroSetupCleanupIteration.md +++ b/docs/articles/samples/IntroSetupCleanupIteration.md @@ -13,9 +13,6 @@ However, if you are writing a macrobenchmark (e.g. a benchmark which takes at le BenchmarkDotNet doesn't support setup/cleanup method for a single method invocation (*an operation*), but you can perform only one operation per iteration. It's recommended to use `RunStrategy.Monitoring` for such cases. -Be careful: if you allocate any objects in - the [`[IterationSetup]`](xref:BenchmarkDotNet.Attributes.IterationSetupAttribute) method, - the MemoryDiagnoser results can also be spoiled. A method which is marked by the [`[IterationCleanup]`](xref:BenchmarkDotNet.Attributes.IterationCleanupAttribute) attribute will be executed only once *after each an iteration*. diff --git a/src/BenchmarkDotNet/Analysers/IterationSetupCleanupAnalyser.cs b/src/BenchmarkDotNet/Analysers/IterationSetupCleanupAnalyser.cs deleted file mode 100644 index 0f57653550..0000000000 --- a/src/BenchmarkDotNet/Analysers/IterationSetupCleanupAnalyser.cs +++ /dev/null @@ -1,39 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using BenchmarkDotNet.Configs; -using BenchmarkDotNet.Diagnosers; -using BenchmarkDotNet.Reports; - -namespace BenchmarkDotNet.Analysers -{ - public class IterationSetupCleanupAnalyser : AnalyserBase - { - public override string Id => "IterationSetupCleanup"; - public static readonly IAnalyser Default = new IterationSetupCleanupAnalyser(); - - private IterationSetupCleanupAnalyser() { } - - public override IEnumerable AnalyseReport(BenchmarkReport report, Summary summary) - { - var culprits = GetCulprits(report); - if (culprits.Any()) - { - string culpritsStr = string.Join(" and ", culprits); - if (HasMemoryDiagnoser(summary)) - yield return CreateWarning($"MemoryDiagnoser could provide inaccurate results because of the {culpritsStr}", report); - } - } - - private static List GetCulprits(BenchmarkReport report) - { - var culprits = new List(2); - if (report.Benchmark.Target.IterationSetupMethod != null) - culprits.Add("IterationSetup"); - if (report.Benchmark.Target.IterationCleanupMethod != null) - culprits.Add("IterationCleanup"); - return culprits; - } - - private static bool HasMemoryDiagnoser(Summary summary) => summary.Config.GetCompositeDiagnoser().Ids.Contains(MemoryDiagnoser.DiagnoserId); - } -} \ No newline at end of file diff --git a/src/BenchmarkDotNet/Configs/DefaultConfig.cs b/src/BenchmarkDotNet/Configs/DefaultConfig.cs index 3418a86ea5..cdae4175e5 100644 --- a/src/BenchmarkDotNet/Configs/DefaultConfig.cs +++ b/src/BenchmarkDotNet/Configs/DefaultConfig.cs @@ -45,7 +45,6 @@ public IEnumerable GetAnalysers() yield return EnvironmentAnalyser.Default; yield return OutliersAnalyser.Default; yield return MinIterationTimeAnalyser.Default; - yield return IterationSetupCleanupAnalyser.Default; yield return MultimodalDistributionAnalyzer.Default; yield return RuntimeErrorAnalyser.Default; }