2 qq 27836205 qq_27836205 于 2017.08.30 14:33 提问

java for循环四千多次 每次循环内部还要有其他处理逻辑 导致速度很慢 如何优化

java for循环四千多次 每次循环内部都要有其他处理逻辑 导致速度很慢 如何优化

9个回答

wzk1986618
wzk1986618   2017.08.30 15:15
已采纳

不知道具体的for内部还需要做什么,可以用下面的方式启线程处理,如下两个线程,一个线程跑1-1000另外一个线程跑1000-2000
楼主可以自己对下面的改造一下

    new Thread() {   
              public void  run() {  
                 for(int 1=0 ;i<1000;i++){
                        }

              }
        }.start(); 

        new Thread() {   
              public void  run() {  
                 for(int 1=1000 ;i<2000;i++){
                        }

              }
        }.start(); 
little_prog
little_prog   2017.08.30 15:24

不要每次循环都去处理逻辑,可以循环一百遍然后把这一百个预处理数据开一个线程去处理(具体的数值根据服务器的运载去设置),这样可以做到合理使用cpu资源的同时,提升执行效率

qq_23292875
qq_23292875   2017.08.30 14:40

利用多线程去循环,把你的四千多次拆开分别传递给多个线程去执行

qq_27836205
qq_27836205 不会啊 忘大神指点一二
3 个月之前 回复
lcmsx
lcmsx   2017.08.30 14:46

使用并行处理。并行计算

qq_27836205
qq_27836205 不会啊 忘大神指点一二
3 个月之前 回复
Small_Mouse0
Small_Mouse0   Ds   Rxr 2017.08.30 15:19

【1】哎,,有些问题不能用并行处理,,,下一个循环操作需要用到上一个循环的结果,,这种需要顺序执行的不好优化

【2】只有那种,不是十分依赖上层循环结果的才可以用并行优化
比如,一个数组乱序,求和(数组长度四千多)
我分成n组分别求和,最后n个组求和,,

不知道题主的“循环内部还要有其他处理逻辑”,,属于哪一种

qq_38702393
qq_38702393   2017.08.30 15:26

电脑处理的快,不优化也行

u011742045
u011742045   2017.08.31 11:09

1、增加多线程处理
2、先分小块汇总,然后在大的汇总
3、能执行到跳过的或者跳出循环的控制好

eqmaster
eqmaster   2017.08.31 11:35

4000个循环本身并不多,建议从“其他处理逻辑”入手优化。如上述几位所言,多线程,并行处理。

alisonyu
alisonyu   2017.09.01 15:42

对于一些不需要利用其返回结果的,多线程并行处理。可以用eventBus来处理 (参考教程
以现在的计算机速度,4000次循环就感觉慢,最好检查一下代码是否有地方需要改进。

Csdn user default icon
上传中...
上传图片
插入图片