电脑CPU多核数和多线程的区别对比!4核8线程和6核6线程哪个好?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了电脑CPU多核数和多线程的区别对比!4核8线程和6核6线程哪个好?相关的知识,希望对你有一定的参考价值。
参考技术A对于比较专注这方面产品的用户应该都知道,在前段时间,AMD锐龙3代新增了R3 3100和R3 3300X两款处理器,同时完成了Zen2架构产品线的全面布局。从这两款新产品的参数上可以看到,R3 3100和R3 3300X配备的是4核8线程,与配备6核6线程的R5 3500X在价位上 相差只有百元左右,那么就会有很多用户产生相对的疑问,对于4核8线程和6核6线程哪个好?针对这个问题,下面我就先来跟大家分享讲解一下,到底是CPU核心多好还是线程多好。
在分析答案之前,我们先带大家了解一下 CPU的核心和线程 ,这两者之间到底存在什么联系? 首先我们要知道,CPU核心比线程更为重要, CPU核心指的是物理核心,也并称为“内核”。四核即代表着CPU内置了四个独立的CPU核心单元组,主要用作处理各种数据的中心计算单元,多核心的处理器能够有效进步CPU的多任务功能,简单点说,就是减少CPU的占用率。
对上文内容有大概的了解后,我们接下来科普一下 线程的相关知识 :一般情况下,一个核心分别对应一个线程,不过随着intel推出了一项超线程技术,一个核心可以实现2个线程技术,这也意味着6个核心可以做到12个线程,超线程的好处就是不用再增加物理核心的情况下,也可以明显的提升CPU多线程性能,毕竟增加物理核心是需要占据较大的核心面积,成本也会相对增加,现在无论是intel还是AMD都具备超线程技术。线程数是一种逻辑的概念,也就是虚拟出的CPU核心数。
举个例子 :我们可以把CPU当作是一个银行,而CPU的核心就相当于柜员,线程数就相当于开通了几个窗口,柜 员和窗口越多,办理业务的速度也就越快。 在通常情况下,一个柜员对应的是一个窗口,通过超线程技术相当于一个柜员管理着两个窗口,同时办理两个窗口的业务,从而实现大大的提高了核心的使用效率,增加了办理业务的速度。
回到正题,那么对于4核8线程和6核6线程到底哪个好? 4核8线程相比6核6线程多了2个线程,但是少了两个物理核心,也可以理解成“6个大人带着6个小孩去打 4个大人带8个小孩”,所以多线程性能无疑是6核6线程更好。毕竟多线程是物理核心虚 拟出来的,所以超线程的性能肯定不能和物理核心相比,超线程只能相当于一个物理核心的25-30%性能,不过线程数不一定就可以利用的上,如果 游戏 或者软件没有进行优化, 还很有可能起反作用,这就是为什么 游戏 关闭多线程后可以提升 游戏 帧数的原因。如果超线程大致相当于一个物理核心 的25-30%性能的计算,这就意味着四个线程才可以抵得上一颗物理核心,所以肯定是核心相比线程更重要。
单线程多线程和多进程的效率对比实验
文 | 饒木陽
Python 是运行在解释器中的语言,查找资料知道, python 中有一个全局锁( GI),在使用多进程( Threa)的情况下,不能发挥多核的优势。而使用多进程( Multiprocess),则可以发挥多核的优势真正地提高效率。
对比实验
资料显示,如果多线程的进程是 CPU 密集型的,那多线程并不能有多少效率上的提升,相反还可能会因为线程的频繁切换,导致效率下降,推荐使用多进程;如果是 IO 密集型,多线程进程可以利用 IO 阻塞等待时的空闲时间执行其他线程,提升效率。所以我们根据实验对比不同场景的效率
(1)引入所需要的模块
(2)定义 CPU 密集的计算函数
(3)定义 IO 密集的文件读写函数
(4) 定义网络请求函数
(5)测试线性执行 IO 密集操作、 CPU 密集操作所需时间、网络请求密集型操作所需时间
输出
CPU 密集:95.6059999466、91.57099986076355 92.52800011634827、 99.96799993515015
IO 密集:24.25、21.76699995994568、21.769999980926514、22.060999870300293
网络请求密集型: 4.519999980926514、8.563999891281128、4.371000051498413、4.522000074386597、14.671000003814697
(6)测试多线程并发执行 CPU 密集操作所需时间
(7)测试多线程并发执行 IO 密集操作所需时间
(8)测试多线程并发执行网络密集操作所需时间
Output : 0.7419998645782471、0.3839998245239258、0.3900001049041748
(9)测试多进程并发执行 CPU 密集操作所需时间
Output : 54.342000007629395、53.437999963760376
(10)测试多进程并发执行 IO 密集型操作
Output : 12.509000062942505、13.059000015258789
(11)测试多进程并发执行 Http 请求密集型操作
Output : 0.5329999923706055、0.4760000705718994
实验结果
CPU 密集型操作 IO 密集型操作网络请求密集型操作
通过上面的结果,我们可以看到:
多线程在 IO 密集型的操作下似乎也没有很大的优势(也许 IO 操作的任务再繁重一些就能体现出优势),在 CPU 密集型的操作下明显地比单线程线性执行性能更差,但是对于网络请求这种忙等阻塞线程的操作,多线程的优势便非常显著了
多进程无论是在 CPU 密集型还是 IO 密集型以及网络请求密集型(经常发生线程阻塞的操作)中,都能体现出性能的优势。不过在类似网络请求密集型的操作上,与多线程相差无几,但却更占用 CPU 等资源,所以对于这种情况下,我们可以选择多线程来执行。
题图:pexels,CC0 授权。
点击阅读原文,查看更多 Python 教程和资源。
以上是关于电脑CPU多核数和多线程的区别对比!4核8线程和6核6线程哪个好?的主要内容,如果未能解决你的问题,请参考以下文章