public IEnumerable <Measurement> GetMeasurements() { double overhead = Overhead == null ? 0.0 : new Statistics(Overhead.Select(m => m.Nanoseconds)).Mean; var mainStats = new Statistics(Workload.Select(m => m.Nanoseconds)); int resultIndex = 0; foreach (var measurement in Workload) { if (mainStats.IsActualOutlier(measurement.Nanoseconds, outlierMode)) { continue; } double value = Math.Max(0, measurement.Nanoseconds - overhead); if (IsSuspiciouslySmall(value)) { value = 0; } yield return(new Measurement( measurement.LaunchIndex, IterationMode.Workload, IterationStage.Result, ++resultIndex, measurement.Operations, value, encoding)); } }