For循环效率

来源:互联网 发布:最新数据库编程工具 编辑:程序博客网 时间:2024/05/23 19:11

1、单层for循环

long start =System.currentTimeMillis();
int sum=0;
for(int i=0;i<1000000000;i++)
{
sum=1+1;
}
long end = System.currentTimeMillis();
System.out.println(end-start); //输出时间差为3-5之间

2、双层for循环

long start =System.currentTimeMillis();
int sum=0;
for(int i=0;i<1;i++)
{
for(int j=0;j<1000000000;j++)
sum=1+1;
}
long end = System.currentTimeMillis();
System.out.println(end-start); //输出时间差为3-8之间

3、双层for循环

long start =System.currentTimeMillis();
int sum=0;
for(int i=0;i<1000000000;i++)
{
for(int j=0;j<1;j++)
sum=1+1;
}
long end = System.currentTimeMillis();
System.out.println(end-start);//输出时间差为1000以上

比较1、2、3中三种情况下,消耗情况


i<10000

变量实例化初始化比较自增i111000010000

i<10000 j<1

变量实例化初始化比较自增i111000010000j100001000011

i<1 j<10000
变量实例化初始化比较自增i1111j111000010000

以上可见,优化for循环时,可以把实例化和初始化放在循环之外进行。

修改如下:

(1) long start =System.currentTimeMillis();
int i=0;
int j=0;
int sum=0;
                for(;i<1000000000;i++)
{
sum=1+1;
}
                long end = System.currentTimeMillis();
System.out.println(end-start);   //输出4


(2) long start =System.currentTimeMillis();
int i=0;
int j=0;
int sum=0;
for(;i<1000000000;i++)
{
for(;j<1;j++)
sum=1+1;
}
                long end = System.currentTimeMillis();
System.out.println(end-start);   //输出5

(3) long start =System.currentTimeMillis();
int i=0;
int j=0;
int sum=0;
for(;i<1;i++)
{
for(;j<1000000000;j++)
sum=1+1;
}
                long end = System.currentTimeMillis();
System.out.println(end-start);   //输出5