多核处理器真的能提升软件系统性能吗?

LarryO'Brien质疑多核处理器及相应的编程语言是否真能带来显著的性能提升。他指出,虽然理论上编译器可以将计算任务分配给多个核心以提高效率,但实际上这种分配可能因开销过大而变得不划算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Larry O'Brien对关于多核处理器和适应它的语言一定能带来性能提升的假设提出质疑

\

原理很简单。没有边际效应(side effect)的函数式编程基本上将自己交给了并行(译者注:意思是最适合并行的技术)。比较有意思的是Map函数,在Map里函数被应用到数组里的每一个元素。

\
\

一些乐观人士看到这儿的时候,说“哈哈,编译器可以轻松地将那些计算分发到一个线程池,在一个有多核的机器上会有性能优势。”确实如此,如果函数非常长或者数组非常大的话。否则,通过多核/多处理器分发计算的开销会比在一个核里执行Map要大的多。最糟糕的情况是,当函数和数据已经在原核的缓存中时,分发它的性能会非常低效。

\
\

从历史上来比较说明,Larry提到C/C++的内联关键字(inline keyword)。他说在大多数情况下,内联关键字是一个灾难。“绝大多数开发人员在考虑内联关键字给他们带来的好处时,做的很糟糕。因为,仅作为分发用时,Map会是反生产力的,内联的代码会降低效率(现代处理器的芯片缓存使得代码的大小和位置对性能而言是非常重要的)”

\
  • 那些声称每一个调用都会被分发的语言,它们有足够的能力去克服并行带来的性能问题吗? \
  • 在并行发生的时候,程序员所要使用的语言在主流程序员的手中会像内联一样,成为一场灾难吗? \
  • 会有一个混合的方法同时解决这两个问题吗?
    \

查阅英文原文:Automatic Parallel Processing, Will It Work?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值