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预热吗?