Core
i5具有2个内核和超线程技术,因此似乎具有4个内核。由于您的排序算法在保持CPU繁忙方面做得很好,因此这两个额外的逻辑核心几乎无法提供比两个物理核心更多的帮助。
由于您要求提供“可信的”消息来源,因此,我将指向我读过一段时间的英特尔网站上的一篇文章:Performance-insights-to-intel-
hyper-threading-technology。特别注意以下有关“超线程的限制”的部分:
计算效率极高的应用程序。
如果处理器的执行资源已得到充分利用,那么启用英特尔®HT技术将无济于事。例如,在启用英特尔HT技术的情况下运行时,每个周期已经可以执行四条指令的代码不会提高性能,因为进程内核每个周期最多只能执行四条指令。
还要注意有关内存子系统争用的这一部分:
极高的内存带宽应用程序。
运行两个线程时,英特尔®HT技术增加了对内存子系统的需求。如果应用程序能够在禁用英特尔®HT技术的情况下利用所有内存带宽,则启用英特尔®HT技术后性能不会提高。在某些情况下,由于在这些情况下内存需求增加和/或数据缓存效应,性能可能会下降。好消息是,与采用Intel
HT技术的旧版Intel CPU相比,基于Nehalem内核,集成内存控制器和Intel®QuickPath
Interconnects的系统大大增加了可用内存带宽。
其他有趣的观点可以在《英特尔开发多线程应用程序指南》中找到。这是检测线程应用程序中的内存带宽饱和的另一个代码段:
随着越来越多的线程或进程共享有限的缓存容量和内存带宽资源,线程化应用程序的可伸缩性可能会受到限制。随着引入更多线程,内存密集型线程应用程序可能会遭受内存带宽饱和的困扰。在这种情况下,线程化应用程序将无法按预期扩展,并且可能会降低性能。



