在双核的服务器上,使用多线程操作可以提升性能吗

megapentakill 发布于 2021/07/21 20:59
阅读 2K+
收藏 1

【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”

在一段业务逻辑中有部分比较复杂的运算,4层循环,循环次数是不一定的,循环中没有IO操作,如果这里把运算提交到线程池,可以提升性能吗

加载中
1
我的代码没有警告
我的代码没有警告

相反,这样会因为上下文的切换而降低性能。

使用多线程的目的有两个(这里指的是内核级线程),利用多核,避免阻塞。当有io操作时,CPU是不干活的,这时候可以使用多线程,异步避免阻塞。当是计算密集型时,可以在多核CPU上使用多线程,实现并行计算。

1
渐行0渐远
渐行0渐远

评论怎么无法显示

0
gammey
gammey

top看下你的两个CPU是不是都在跑,只有一个在跑那就没用满

0
wj2699
wj2699

几乎没有

0
fx443
fx443

可以.

  • 无锁纯计算, 双核双线程提升80%
  • 有锁,有竞争依赖, 多线程提升 -80%, +80%
  • 多io等待, 单核多线程都能提升 10%,1000000%

一切以测试数据为准.

0
woodyyang
woodyyang

这个问题比较深,得看具体的业务,并且要优化。

0
nebulabox
nebulabox

认真写,好好优化,可以比单独循环提升90%以上。

0
kakai
kakai

可以提升性能的,特别是循环量比较大的情况,jdk8后的list和map都有并行流式api,这个就是充分利用多核优势而提升性能的。小规模运算没必要使用并行流式api,这样反而会加重开销

0
一码Yma
一码Yma

计算密集型任务线程数等于核心数性能最好,io密集型一般5倍于核心数性能较好

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部