JAVA代码,对for循环的优化

Python017

JAVA代码,对for循环的优化,第1张

第二个比第一个能略微好点 但效率跟第一个也差不多

第一个循环比较常见,大家基本上也都这么用。但是每一次i<strList.size(),都需要做一次判断,非常消耗时间,每一次i++,都需要消耗CPU的计算能力。当数据量达到一百万以上的时候,此时这个循环就容易出现内存溢出,程序崩溃(当然,一般的程序基本上都不会有那么大的数据量)。

建议这样改进

int len=strList.size()

int i=0

for(i<leni++){

}

当声明一个临时变量存储demo.length时,这时消耗的时间将少得多。

那么我们要做的就是把要做的事情开多线程里去处理,可以简单的实现如下

package com.wenxy.test.baidu.zhidao.bank

import java.util.Iterator

import java.util.concurrent.Executor

import java.util.concurrent.Executors

public class TestLoop {

    public static int i = 0

    void doSomething() {

        System.out.println(Thread.currentThread().getName()

                + " is doing。。。 and i = " + i)

        i++

    }

    public static void main(String[] args) {

        final TestLoop testLoop = new TestLoop()

        // 创建一个线程池,用10个线程处理

        Executor executor = Executors.newFixedThreadPool(10)

        for (int i = 0 i < 100 i++) {

            executor.execute(new Runnable() {

                @Override

                public void run() {

                    testLoop.doSomething()

                }

            })

        }

    }

}

每次循环都执行一遍list.size(),即使size函数里面声明都不做,仅return s开销也比写上一个变量len要大。如果size函数还要计算统计元素数量。开销更大

改写成i<len,每次循环就只2个整型之间比较一次,开销最小