|
5 | 5 | using BenchmarkDotNet.Attributes; |
6 | 6 | using BenchmarkDotNet.Configs; |
7 | 7 | using BenchmarkDotNet.Diagnosers; |
| 8 | +using BenchmarkDotNet.Engines; |
8 | 9 | using BenchmarkDotNet.Extensions; |
9 | 10 | using BenchmarkDotNet.Jobs; |
10 | 11 | using BenchmarkDotNet.Portability; |
@@ -113,20 +114,14 @@ private void AssertZeroResults(Type benchmarkType, IConfig config) |
113 | 114 |
|
114 | 115 | foreach (var report in summary.Reports) |
115 | 116 | { |
116 | | - var workloadTimes = report.AllMeasurements |
117 | | - .Where(m => m.IsOverhead() && m.IterationStage == Engines.IterationStage.Actual) |
118 | | - .Select(m => m.GetAverageTime().Nanoseconds) |
119 | | - .ToArray(); |
120 | | - var overheadTimes = report.AllMeasurements |
121 | | - .Where(m => m.IsOverhead() && m.IterationStage == Engines.IterationStage.Actual) |
122 | | - .Select(m => m.GetAverageTime().Nanoseconds) |
123 | | - .ToArray(); |
124 | | - |
125 | | - bool isZero = ZeroMeasurementHelper.CheckZeroMeasurementTwoSamples(workloadTimes, overheadTimes); |
| 117 | + var workloadMeasurements = report.AllMeasurements.Where(m => m.Is(IterationMode.Workload, IterationStage.Actual)).GetStatistics().WithoutOutliers(); |
| 118 | + var overheadMeasurements = report.AllMeasurements.Where(m => m.Is(IterationMode.Overhead, IterationStage.Actual)).GetStatistics().WithoutOutliers(); |
| 119 | + |
| 120 | + bool isZero = ZeroMeasurementHelper.CheckZeroMeasurementTwoSamples(workloadMeasurements, overheadMeasurements); |
126 | 121 | Assert.True(isZero, $"Actual time was not 0."); |
127 | 122 |
|
128 | | - var workloadTime = workloadTimes.Average(); |
129 | | - var overheadTime = overheadTimes.Average(); |
| 123 | + var workloadTime = workloadMeasurements.Average(); |
| 124 | + var overheadTime = overheadMeasurements.Average(); |
130 | 125 |
|
131 | 126 | // Allow for 1 cpu cycle variance |
132 | 127 | Assert.True(overheadTime * cpuGhz < workloadTime * cpuGhz + 1, "Overhead took more time than workload."); |
@@ -178,20 +173,14 @@ private void AssertDifferentSizedStructsResults(IConfig config) |
178 | 173 |
|
179 | 174 | foreach (var report in summary.Reports) |
180 | 175 | { |
181 | | - var workloadTimes = report.AllMeasurements |
182 | | - .Where(m => m.IsOverhead() && m.IterationStage == Engines.IterationStage.Actual) |
183 | | - .Select(m => m.GetAverageTime().Nanoseconds) |
184 | | - .ToArray(); |
185 | | - var overheadTimes = report.AllMeasurements |
186 | | - .Where(m => m.IsOverhead() && m.IterationStage == Engines.IterationStage.Actual) |
187 | | - .Select(m => m.GetAverageTime().Nanoseconds) |
188 | | - .ToArray(); |
189 | | - |
190 | | - bool isZero = ZeroMeasurementHelper.CheckZeroMeasurementTwoSamples(workloadTimes, overheadTimes); |
| 176 | + var workloadMeasurements = report.AllMeasurements.Where(m => m.Is(IterationMode.Workload, IterationStage.Actual)).GetStatistics().WithoutOutliers(); |
| 177 | + var overheadMeasurements = report.AllMeasurements.Where(m => m.Is(IterationMode.Overhead, IterationStage.Actual)).GetStatistics().WithoutOutliers(); |
| 178 | + |
| 179 | + bool isZero = ZeroMeasurementHelper.CheckZeroMeasurementTwoSamples(workloadMeasurements, overheadMeasurements); |
191 | 180 | Assert.False(isZero, $"Actual time was 0."); |
192 | 181 |
|
193 | | - var workloadTime = workloadTimes.Average(); |
194 | | - var overheadTime = overheadTimes.Average(); |
| 182 | + var workloadTime = workloadMeasurements.Average(); |
| 183 | + var overheadTime = overheadMeasurements.Average(); |
195 | 184 |
|
196 | 185 | // Allow for 1 cpu cycle variance |
197 | 186 | Assert.True(overheadTime * cpuGhz < workloadTime * cpuGhz + 1, "Overhead took more time than workload."); |
|
0 commit comments