性能计数器是什么,它们如何工作?它们是否只适用于Windows,还是操作系统级别的概念,在Linux等其他操作系统中也可用?
我该如何在我的.NET应用程序中使用它们来测量应用程序各部分的执行时间?
我搜索了一下,但惊讶地发现没有找到任何好的参考资料。
性能计数器是什么,它们如何工作?它们是否只适用于Windows,还是操作系统级别的概念,在Linux等其他操作系统中也可用?
我该如何在我的.NET应用程序中使用它们来测量应用程序各部分的执行时间?
我搜索了一下,但惊讶地发现没有找到任何好的参考资料。
.Net中的性能计数器是针对Windows特定的。我认为使用性能计数器来测量执行时间并不是一个好方法,这将使事情比必要的复杂。Visual Studio包含一个性能工具,如果你转到“查看-其他窗口-性能资源管理器”菜单,性能资源管理器窗口就会出现,然后你可以点击启动性能向导按钮。 另一种可能性是使用Stopwatch类,如果你的计算机有高分辨率计时器,它将使用它。
Int64 nanoSecPerTick = (1000L * 1000L * 1000L) / Stopwatch.Frequency;
Stopwatch timer = Stopwatch.StartNew();
// execute the code that you want to time
timer.Stop();
Int64 nanoSec = timer.ElapsedTicks / nanoSecPerTick;
// or if you don't need such fine grained timing:
Int64 milliSec = timer.ElapsedMilliseconds;
Console.Write("Elapsed time: " + nanoSec + "ns");