|
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