【发布时间】:2010-12-29 20:45:27
【问题描述】:
在我读过的“Core java 1”中
注意:ArrayList 距离很远 效率低于 int[] 数组 因为每个值都是分开的 包裹在一个物体里面。你会 只想将此构造用于 程序员时的小收藏 方便比方便更重要 效率。
但是在我的软件中,由于某些要求,我已经使用了 Arraylist 而不是普通数组,尽管“该软件应该具有高性能,在我阅读了引用的文字后,我开始感到恐慌!”我可以改变的一件事是将双变量更改为双,以防止自动装箱,我不知道这是否值得,在下一个示例算法中
public void multiply(final double val)
{
final int rows = getSize1();
final int cols = getSize2();
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
this.get(i).set(j, this.get(i).get(j) * val);
}
}
}
我的问题是将 double 更改为 Double 有什么不同吗?或者那是一个不会影响任何东西的微优化?请记住,我可能正在使用大型矩阵。第二我应该考虑重新设计整个程序吗?
【问题讨论】:
-
警告是告诉你 ArrayList 与原始数组的效率,而代码示例两者都没有使用。
-
该函数在一个扩展 ArrayList
- >
-
一个小切线:
final List<Double> row = this.get(i); for (int j = 0; j < cols; j++) { row.set(j, row.get(j) * val); }将总共检索每行一次,而不是每列两次,这可以大大加快您的代码速度,以获得相当小的和更易于阅读的更改。
标签: java performance optimization autoboxing