Joe Duffy在MSDN文章“Using concurrency for scalability”中指出,创建一个线程的成本大约是200,000个周期,并且销毁的成本大约是100,000个周期。
当我尝试创建一个新线程来执行某些计算时,我想确保计算本身比200,000个周期更昂贵。
我如何测量CPU周期?我认为这比测量执行时间更有趣。
答案 0 :(得分:2)
您可以使用像英特尔Vtune这样的采样分析器来测量正在消耗的CPU周期数量,并对被测系统产生最小的干扰。
使用线程时,目标是避免不必要的产生新线程。考虑使用thread pool。这将允许您异步运行工作项,但不必为每个项目生成新线程。
答案 1 :(得分:1)
我会查看System.Diagnostic命名空间。它在跟踪内存和CPU使用方面有很多东西。
答案 2 :(得分:0)
我几天前问过一个密切相关的问题,但还没有找到一种方法来衡量代码的实际CPU周期使用情况: Limiting assembly execution number of cpu cycles
在您的情况下,您是否可以运行计算的分析并查看单次计算需要多长时间,并将其与产生计算的线程的总时间进行比较,然后将线程关闭?< / p>
答案 3 :(得分:0)
这是计算CPU周期的问题。不同的CPU采用不同的周期数来实现相同的指令。因此,IMO的指标并不太可靠。我认为您应该测量的是执行时间,在.NET中,您使用System.Environment.TickCount来完成此任务。我认为这是你得到的最好的......