TestHelper { 执行一个方法并返回执行时间间隔 TimeSpan InvokeAndGetTimeSpan(Action call) { Stopwatch sw = new Stopwatch(); sw.Start(); call(); sw.Stop(); return sw.Elapsed; } 执行一个方法并Console输出实际执行间隔(豪秒) /// </summary> [Conditional()] InvokeAndWriteTimeSpan(Action call) { Console.WriteLine(, InvokeAndGetTimeSpan(call).TotalMilliseconds); } 执行一个方法并返回托管内存使用大小(可能内存回收会导致不准确) InvokeAndGetMemoryUsed(Action call) { var start = GC.GetTotalMemory(false); call(); return GC.GetTotalMemory(false) - start; } 执行一个方法并Console输出托管内存使用大小(字节) /// </summary> [Conditional()] InvokeAndWriteMemoryUsed(Action call) { Console.WriteLine(, InvokeAndGetMemoryUsed(call) / 1024F); } 执行一个方法并Console输出:实际执行间隔(豪秒);托管内存使用大小(可能内存回收会导致不准确) /// </summary> [Conditional()] InvokeAndWriteAll(Action call) { Stopwatch sw = new Stopwatch(); sw.Start(); var start = GC.GetTotalMemory(false); call(); var end = GC.GetTotalMemory(false); sw.Stop(); Console.WriteLine(, sw.ElapsedMilliseconds); Console.WriteLine(, (end - start) / 1024F); Console.WriteLine(, GC.CollectionCount(0)); } }
View Code