CPU 八核心八线程 与 四核心八线程 以及 六核心十二线程 一般来说,那个更快一些?

CPU 八核心八线程 与 四核心八线程 以及 六核心十二线程 一般来说,那个更快一些?,第1张

你需要报cpu的具体型号。

单纯从计算能力上来讲,八核心线程通常是AMD的推土机、打桩机架构的CPU,性能真的不大靠谱。

例如FX8300/FX8350等,虽然核心线程数都很多,但只是能够唬人的纸老虎。

四核八线程是一般意义的i7,例如i7 7700/i7 7700K,性能也算够用。

六核十二线程分为某些至尊平台的i7和XEON系列的CPU。

例如i7 6800K/i7 6850K,或E5 2620等。

单纯的并行计算建议选择多核心多线程但主频并不算高的XEON。优势比较明显。

同核心数同架构自然主频越高越好。

最后附上一张CPU天梯图。虽然并不能100%准确解决问题,但应该还是有参考价值。

一般的一个核心一个线程,英特尔的超线程技术使酷睿I系列的CPU,一个核心使用2个线程。
奔腾双核是2核2线程,酷睿I3是双核4线程,酷睿I5不使用超线程技术,所以是四核四线程,酷睿I7是四核八线程。
AMD的CPU全系列都不支持超线程技术,所以一个核心一个线程,6核心就是6线程,8核心就是8线程。

一般说来,大家认为线程池的大小经验值应该这样设置:(其中N为CPU的个数)

如果是CPU密集型应用,则线程池大小设置为N+1

如果是IO密集型应用,则线程池大小设置为2N+1(因为io读数据或者缓存的时候,线程等待,此时如果多开线程,能有效提高cpu利用率)

如果一台服务器上只部署这一个应用并且只有这一个线程池,那么这种估算或许合理,具体还需自行测试验证。

但是,IO优化中,这样的估算公式可能更适合:

最佳线程数目 = ((线程等待时间+线程CPU时间)/线程CPU时间 ) CPU数目

因为很显然,线程等待时间所占比例越高,需要越多线程。线程CPU时间所占比例越高,需要越少线程。

下面举个例子:

比如平均每个线程CPU运行时间为05s,而线程等待时间(非CPU运行时间,比如IO)为15s,CPU核心数为8,那么根据上面这个公式估算得到:((05+15)/05)8=32。这个公式进一步转化为:

最佳线程数目 = (线程等待时间与线程CPU时间之比 + 1) CPU数目

多线程技术可以提高cpu利用率,尤其是多核cpu的机器,提高并发执行效率。这是建立在cpu执行有空余的情况下的,多线程也并非没有代价,首先线程作为 *** 作系统的最小调度单位也是要占用内存空间的,其次线程调度及上下文切换也会消耗性能。一般线程数为cpu个数2+1较好,线程太多会占用内存,频繁的线程上下文切换也会导致效率降低。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/12866171.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存