【发布时间】:2014-04-26 00:29:06
【问题描述】:
我正在玩 Java,想知道以下在性能方面有何不同。我知道过早的优化是编程的困境,但我的好奇心仅供参考。
public class Type1{
int[] data = new data[4];
public int getData( int index ){
return data[index];
}
}
public class Type2{
int data1;
int data2;
int data3;
int data4;
public int getData1(){
return data1;
}
public int getData2(){
return data2;
}
public int getData3(){
return data3;
}
public int getData4(){
return data4;
}
}
可以理解,有许多因素可能会产生影响,但在某些方面必须有一些明显的表现。显然,Type1 类在设计方面是一个更具吸引力的解决方案,但它似乎在检索数据时有一个额外的步骤,即进入一个数组以获取一个 int,而 Type2 则直接用于数据。如果它们持有 Class 对象数组,则可能差异会更明显,因为可能会保证 Java 使用数组成员的引用。我是不是完全没球了?
【问题讨论】:
-
我很确定任何差异都可以忽略不计。
-
不知道有没有办法反编译java代码来比较它的Assembly?
-
当然第二个不会做一些额外的数组步骤(检查索引等),但你应该记住,使用第二种样式你将失去数组的好处(以及可维护性较差的代码!)
-
@sgtHale 这可能应该是一个单独的问题,它已经存在于 SO,但这个链接似乎很有用:blog.leocad.io/how-to-decompile-dalvik-and-java-code
标签: java arrays optimization