我有一个奇怪的问题,但对你们中的某些人来说可能并不那么奇怪。
我正在编写一个使用boost线程并使用boost barrier来同步线程的应用程序。我有两台机器来测试应用程序。
机器1是core2 duo(T8300)cpu机器(Windows XP专业版 - 4GB RAM),我得到以下性能数据:
主题数:1,TPS:21
线程数:2,TPS:35(改善66%)
线程数量的进一步增加会降低TPS,但这是可以理解的,因为机器只有两个核心。
机器2是一个2四核(Xeon X5355)cpu机器(带有4GB RAM的Windows 2003服务器),有8个有效内核。
主题数:1,TPS:21
线程数:2,TPS:27(改善28%)
主题数:4,TPS:25
线程数:8,TPS:24
正如您所看到的,2个线程后性能下降(尽管它有8个内核)。如果程序有一些瓶颈,那么2线程也应该降级。
有什么想法吗? ,解释? ,OS是否在性能方面有一定作用? - 看起来Core2duo(2.4GHz)比Xeon X5355(2.66GHz)更好,但它具有更好的时钟速度。
谢谢
-Zoolii
答案 0 :(得分:2)
时钟速度和操作系统与编写代码的方式没有太多关系。要检查的事项可能包括:
在分析软件瓶颈时,您可以使用的一个工具是简单的线程转储。在执行软件的整个生命周期中进行一些转储应该会暴露软件中的瓶颈。您可以获取该输出并使用它来重新评估您的代码。
答案 1 :(得分:0)
添加更多CPU并不总是等同于更好的性能,锁定和争用会严重降低性能。需要考虑的因素是:
答案 2 :(得分:0)
根据经验,英特尔政策可能是2个线程或仅在该处理器上进行双重处理,只有pthread可以与该版本的操作系统一起使用,这两个处理器的设计符合不同的法律规定不同的规定或允许,不允许自己的线程进程,处理器正在退出超过n个线程,并且报告此错误消息的处理会降低两个核心的吞吐量,并可能导致核心停用3和4。