public static ThroughputTestResult Capture(string label, long messages, Action action)
        {
            GC.Collect();
            GC.WaitForPendingFinalizers();
            GC.Collect();

            //TODO : This obviously allocates. Change to values on the stack. -LC
            var initial = GcInfo.Current();
            var start   = Stopwatch.GetTimestamp();

            action();
            var elapsedTicks = Stopwatch.GetTimestamp() - start;
            var gcDelta      = GcInfo.Current().Delta(initial);

            return(new ThroughputTestResult
            {
                Label = label,
                Messages = messages,
                Elapsed = TimeSpan.FromTicks(elapsedTicks),
                GarbageCollections = gcDelta
            });
        }
示例#2
0
 public GcInfo Delta(GcInfo previous)
 {
     return(new GcInfo(Gen0 - previous.Gen0, Gen1 - previous.Gen1, Gen2 - previous.Gen2, TotalBytesAllocated - previous.TotalBytesAllocated));
 }
示例#3
0
 public GcInfo Delta(GcInfo previous)
 {
     return new GcInfo(Gen0-previous.Gen0, Gen1-previous.Gen1, Gen2-previous.Gen2, TotalBytesAllocated - previous.TotalBytesAllocated);
 }