arraylist 与数组中基本类型的包装

2023-12-30

在“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(使用前将#替换为@)

arraylist 与数组中基本类型的包装 的相关文章

随机推荐