【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”
在一段业务逻辑中有部分比较复杂的运算,4层循环,循环次数是不一定的,循环中没有IO操作,如果这里把运算提交到线程池,可以提升性能吗
相反,这样会因为上下文的切换而降低性能。
使用多线程的目的有两个(这里指的是内核级线程),利用多核,避免阻塞。当有io操作时,CPU是不干活的,这时候可以使用多线程,异步避免阻塞。当是计算密集型时,可以在多核CPU上使用多线程,实现并行计算。
评论怎么无法显示
top看下你的两个CPU是不是都在跑,只有一个在跑那就没用满
几乎没有
可以.
一切以测试数据为准.
这个问题比较深,得看具体的业务,并且要优化。
认真写,好好优化,可以比单独循环提升90%以上。
可以提升性能的,特别是循环量比较大的情况,jdk8后的list和map都有并行流式api,这个就是充分利用多核优势而提升性能的。小规模运算没必要使用并行流式api,这样反而会加重开销
计算密集型任务线程数等于核心数性能最好,io密集型一般5倍于核心数性能较好
相反,这样会因为上下文的切换而降低性能。
使用多线程的目的有两个(这里指的是内核级线程),利用多核,避免阻塞。当有io操作时,CPU是不干活的,这时候可以使用多线程,异步避免阻塞。当是计算密集型时,可以在多核CPU上使用多线程,实现并行计算。
评论怎么无法显示
top看下你的两个CPU是不是都在跑,只有一个在跑那就没用满
几乎没有
可以.
一切以测试数据为准.
这个问题比较深,得看具体的业务,并且要优化。
认真写,好好优化,可以比单独循环提升90%以上。
可以提升性能的,特别是循环量比较大的情况,jdk8后的list和map都有并行流式api,这个就是充分利用多核优势而提升性能的。小规模运算没必要使用并行流式api,这样反而会加重开销
计算密集型任务线程数等于核心数性能最好,io密集型一般5倍于核心数性能较好