我已经编写了一个依赖于线程的程序。此外,还需要测量每个线程所花费的总时间,以及执行时间(内核时间加上用户时间)。线程执行时序
可以有任意数量的线程,许多线程可以一次运行。这归功于用户活动。我需要它们尽可能快地运行,所以使用像WMI/Performance Monitor那样的一些开销来测量线程时间并不理想。
目前,我使用GetThreadTimes,如本文所示:http://www.codeproject.com/KB/dotnet/ExecutionStopwatch.aspx
我的问题很简单:我理解.NET线程可能不是一比一的基础与系统线程上对应(尽管到目前为止我的测试中,似乎是一对一的)。既然如此,如果.NET决定将两个或更多的线程放到一个系统线程中,我会从我的计时代码中得到奇怪的结果吗?如果是这样(或者甚至没有),是否有另一种方法来测量.NET线程的内核和用户时间?
就我个人而言,我会选择像[SmartThreadPool](http://www.codeproject.com/KB/threads/smartthreadpool.aspx)这样的线程池,并使用它们的性能计数器来衡量事物。 –
我很难理解你的问题,而不是你真正想要衡量的是什么,为什么。您是否考虑过使用秒表类型+日志记录进行简单的计时或任何常规CPU分析器,例如ANTS或Jetbrain? – Mahol25