我使用delphi xe6和双核。
在my former question中,许多人已回答使用多线程来分散核心负载。感谢。
我编码了一个过载的样本。在这个示例中,我没有使用多线程,但负载分散。
请告诉我没有多线程编码时负载分散的原因,并且在计算过程中CPU使用率限制在50%左右?
如果我在xe7中使用tParallel.For,性能(特别是cpu使用率)会更好吗?
永远感谢。
答案 0 :(得分:4)
如果您有两个内核和一个受CPU限制的单线程程序,那么您应该会看到系统的平均CPU使用率约为50%,即100%除以2个CPU。
我没有阅读图片中显示的用户界面的语言,所以我无法阅读标签,但它似乎只是说明了我所描述的内容。底部两个图表在平均时产生顶部图形。您的程序可能不是专门在单个CPU上运行;操作系统可以自由安排程序在每个时间片的任一核心上运行。
您的代码不能很好地并行化;它仍然更新窗口标题中的单个共享资源。并行运行时,您应该期望大致相当于更差的性能:您将看到CPU使用率的两倍,但是大约一半的时间。但是,由于多线程对窗口标题的争用,它可能会更糟糕。