openHistorian.DebugStopwatch.TimeEventMedian C# (CSharp) Method

TimeEventMedian() public method

public TimeEventMedian ( System.Action function ) : double
function System.Action
return double
        public double TimeEventMedian(Action function)
        {
            List<double> values = new List<double>();
            GC.Collect();
            function();
            int count = 0;
            Stopwatch swTotal = new Stopwatch();
            swTotal.Start();
            while (swTotal.Elapsed.TotalSeconds < 1 && values.Count < 100)
            {
                sw.Restart();
                function();
                sw.Stop();
                values.Add(sw.Elapsed.TotalSeconds);
            }

            return values[(values.Count - 1) >> 1];
        }
    }