diff --git a/src/BenchmarkDotNet/Attributes/MemoryDiagnoserAttribute.cs b/src/BenchmarkDotNet/Attributes/MemoryDiagnoserAttribute.cs index c0a365d96a..3185c47098 100644 --- a/src/BenchmarkDotNet/Attributes/MemoryDiagnoserAttribute.cs +++ b/src/BenchmarkDotNet/Attributes/MemoryDiagnoserAttribute.cs @@ -9,7 +9,9 @@ public class MemoryDiagnoserAttribute : Attribute, IConfigSource { public IConfig Config { get; } - public MemoryDiagnoserAttribute(bool includeSurvived = false) + public MemoryDiagnoserAttribute() : this(false) { } + + public MemoryDiagnoserAttribute(bool includeSurvived) { Config = ManualConfig.CreateEmpty().AddDiagnoser(includeSurvived ? MemoryDiagnoser.WithSurvived : MemoryDiagnoser.Default); } diff --git a/src/BenchmarkDotNet/Diagnosers/MemoryDiagnoser.cs b/src/BenchmarkDotNet/Diagnosers/MemoryDiagnoser.cs index a0b8480dfe..f859bc4264 100644 --- a/src/BenchmarkDotNet/Diagnosers/MemoryDiagnoser.cs +++ b/src/BenchmarkDotNet/Diagnosers/MemoryDiagnoser.cs @@ -68,7 +68,7 @@ private class SurvivedMemoryMetricDescriptor : IMetricDescriptor public string Id => "Survived Memory"; public string DisplayName => "Survived"; - public string Legend => "Total application memory consumed after all operations, including Cleanups (managed only, inclusive, 1KB = 1024B)"; + public string Legend => "Total memory survived after all operations (managed only, inclusive, 1KB = 1024B)"; public string NumberFormat => "N0"; public UnitType UnitType => UnitType.Size; public string Unit => SizeUnit.B.Name; diff --git a/src/BenchmarkDotNet/Engines/GcStats.cs b/src/BenchmarkDotNet/Engines/GcStats.cs index fe66ccc578..0ce5748f4d 100644 --- a/src/BenchmarkDotNet/Engines/GcStats.cs +++ b/src/BenchmarkDotNet/Engines/GcStats.cs @@ -248,6 +248,7 @@ public override int GetHashCode() hashCode = (hashCode * 397) ^ Gen2Collections; hashCode = (hashCode * 397) ^ AllocatedBytes.GetHashCode(); hashCode = (hashCode * 397) ^ TotalOperations.GetHashCode(); + hashCode = (hashCode * 397) ^ SurvivedBytes.GetHashCode(); return hashCode; } } diff --git a/src/BenchmarkDotNet/Reports/Measurement.cs b/src/BenchmarkDotNet/Reports/Measurement.cs index c15986d83e..5a3c0dcadc 100644 --- a/src/BenchmarkDotNet/Reports/Measurement.cs +++ b/src/BenchmarkDotNet/Reports/Measurement.cs @@ -21,7 +21,7 @@ public struct Measurement : IComparable private const string OpSymbol = "op"; private const string SBSymbol = "B"; - private static Measurement Error() => new Measurement(-1, IterationMode.Unknown, IterationStage.Unknown, 0, 0, 0, 0); + private static Measurement Error() => new Measurement(-1, IterationMode.Unknown, IterationStage.Unknown, 0, 0, 0); private static readonly int IterationInfoNameMaxWidth = Enum.GetNames(typeof(IterationMode)).Max(text => text.Length) + Enum.GetNames(typeof(IterationStage)).Max(text => text.Length); @@ -49,6 +49,18 @@ private static readonly int IterationInfoNameMaxWidth /// public long SurvivedBytes { get; } + /// + /// Creates an instance of struct. + /// + /// + /// + /// + /// + /// The number of operations performed. + /// The total number of nanoseconds it took to perform all operations. + public Measurement(int launchIndex, IterationMode iterationMode, IterationStage iterationStage, int iterationIndex, long operations, double nanoseconds) + : this(launchIndex, iterationMode, iterationStage, iterationIndex, operations, nanoseconds, 0) { } + /// /// Creates an instance of struct. ///