Java 加上「;“无关紧要”;代码会缩短运行时间

Java 加上「;“无关紧要”;代码会缩短运行时间,java,arrays,if-statement,variable-assignment,Java,Arrays,If Statement,Variable Assignment,我写了一个方法,当我添加了一些无关紧要的代码时,如下所示: array[1]=array[1]; array[0]=array[0]; array[3]=array[3]; array[2]=array[2]; 它工作得更快 我使用了double t=System.currentTimeMillis()首先记录时间。 然后调用该方法并使用System.out.println(System.currentTimeMillis()-t)在末尾 如果没有代码(array[1]=array[1];…)

我写了一个方法,当我添加了一些无关紧要的代码时,如下所示:

array[1]=array[1];
array[0]=array[0];
array[3]=array[3];
array[2]=array[2];
它工作得更快

我使用了
double t=System.currentTimeMillis()首先记录时间。
然后调用该方法并使用
System.out.println(System.currentTimeMillis()-t)在末尾

如果没有代码(
array[1]=array[1];…
),运行时间为1035.0毫秒,但是如果添加了代码,则运行时间为898.0毫秒

这是我的方法和代码。PS:此方法用于游戏2048,exp:{2,2,2}转换为{0,0,4,4}

static void toRight2(int[] array){
    if (array[2]==array[3]  ) {
        array[3]=array[2]*2;
        if (array[0]==array[1]) {
            array[2]=array[1]*2;
            array[0]=0;
            array[1]=0;
        }else {
            array[2]=array[1];
            array[1]=array[0];
            array[0]=0;
        }
    } else{
        if (array[0]==array[1]) {
            array[1]=array[1]*2;
            array[0]=0;
            array[3]=array[3];
            array[2]=array[2];
        }else {
            array[1]=array[1];//delete this cost more time
            array[0]=array[0];//delete this cost more time 
            array[3]=array[3];//delete this cost more time
            array[2]=array[2];//delete this cost more time
        } 
    }

}

public static void main(String[] args) {
    double t=System.currentTimeMillis();
    int[] array={1,2,3,3};
    for (int j = 2; j <400*1000000; j++) {
         toRight2(array);
    }
    System.out.println(System.currentTimeMillis()-t);
}
static void toRight2(int[]数组){
if(数组[2]==数组[3]){
数组[3]=数组[2]*2;
if(数组[0]==数组[1]){
数组[2]=数组[1]*2;
数组[0]=0;
数组[1]=0;
}否则{
数组[2]=数组[1];
数组[1]=数组[0];
数组[0]=0;
}
}否则{
if(数组[0]==数组[1]){
数组[1]=数组[1]*2;
数组[0]=0;
数组[3]=数组[3];
数组[2]=数组[2];
}否则{
数组[1]=数组[1];//删除此项会花费更多时间
数组[0]=数组[0];//删除此项会花费更多时间
数组[3]=数组[3];//删除此项会花费更多时间
数组[2]=数组[2];//删除此项会花费更多时间
} 
}
}
公共静态void main(字符串[]args){
双t=System.currentTimeMillis();
int[]数组={1,2,3,3};

对于(int j=2;j请阅读thx以获得您的答案,当我在重新编码时间之前添加预热阶段时,它工作得很好,比如:对于(int i=0;i<100000000 l;i++);但是为什么=A=,我找不到预热阶段和我的无关紧要的代码之间的任何关系,这是因为我添加了更多无关紧要的代码让JVM预热吗?