在“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 会有什么不同吗?或者这是一个不会影响任何事情的微观优化?请记住我可能正在使用大型矩阵。第二我是否应该考虑再次重新设计整个程序?
最大的问题是double
versus Double
后者增加了一定量的内存开销——在 Sun 32 位 JVM 上每个对象 8 字节,在其他平台上可能或多或少。然后您需要另外 4 个字节(在 64 位 JVM 上为 8 个字节)来引用该对象。
因此,假设您有 1,000,000 个对象,差异如下:
double[1000000]
每个条目 8 个字节;总计 = 8,000,000 字节
Double[1000000]
每个对象实例 16 个字节 + 每个引用 4 个字节;总计 = 20,000,000 字节
这是否重要很大程度上取决于您的应用程序。除非您发现自己的内存不足,否则请假设这并不重要。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)