我有一个多线程 C# 程序,我需要记录每个线程在特定自旋等待锁中花费的时间间隔。
我知道有一些方法可以从 C 或汇编程序执行此操作,但是是否可以以某种方式直接从 C# 访问相同的计数器,也就是说,无需通过 Stopwatch 类(我假设调用 Start/Stop 会产生一些影响)开销,我不确定它有多精确)?
在“排除”使用 System.Diagnostics.Stopwatch 之前:您的测试系统是否支持高分辨率秒表? : 看MSDN 上的“秒表”:签出:“频率”和“IsHighResolution”.
关于从 StopWatch 中获得“最佳”效果的优秀 SO 线程:所以不要错过 Eric Lippert 的评论
.net 时间测量的精度与准确度:SO 线程:.NET 时间测量中的精度与准确度可能会有帮助。
C# 中对 Win32 API 的 API 调用的“成本”:QueryPerformanceFrequency 和 QueryPerformanceCounter:与 StopWatch 相比?
Codeproject 上的一个来自 C# 的 API 示例:2006年的代码,作者在评论中说他没有考虑线程安全
SO 上的其他线程处理了诸如补偿托管代码的一次性 JIT 命中(“空运行”预热技术)、强制垃圾收集和终结器等问题。很容易找到。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)