【发布时间】:2010-11-12 01:53:01
【问题描述】:
我找到了一个很好的question 用于测量功能性能,答案建议使用秒表如下
Stopwatch sw = new Stopwatch();
sw.Start();
//DoWork
sw.Stop();
//take sw.Elapsed
但是,如果您在多处理器机器下运行,这是否有效?线程可以切换到另一个处理器,可以吗? 同样的事情也应该在 Enviroment.TickCount 中。 如果答案是肯定的,我应该将我的代码包装在 BeginThreadAffinity 中,如下所示
Thread.BeginThreadAffinity();
Stopwatch sw = new Stopwatch();
sw.Start();
//DoWork
sw.Stop();
//take sw.Elapsed
Thread.EndThreadAffinity();
附言
切换可以发生在线程级别,而不仅仅是处理器级别,例如,如果函数在另一个线程中运行,那么系统可以将其切换到另一个处理器,如果发生这种情况,在切换后秒表是否有效?
我不仅使用 Stopwatch 进行性能测量,还使用 Thread.Sleep 模拟计时器功能(以防止调用重叠)
【问题讨论】:
标签: c# multiprocessor performance