예제 #1
0
        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));
            }
        }