由字节/短而不是整数组成的 Java 数组的内存效率更高吗?

Posted

技术标签:

【中文标题】由字节/短而不是整数组成的 Java 数组的内存效率更高吗?【英文标题】:Is a Java array consisting of bytes/shorts instead of integers more memory efficient? 【发布时间】:2016-08-28 08:31:57 【问题描述】:

在 *** 上的许多帖子中,人们表示使用字节或短整数代替整数不会降低内存使用量或 CPU 使用率。 但是,如果我有一个字节或短数组,那么该数组会比类似的整数数组使用更少的内存和/或更快地迭代吗?

具体来说:我问的是原始类型。

【问题讨论】:

如果您询问原始类型,yes, it saves memory to use narrower types。 对不起,我的意思是字节。我改了帖子。 @Defi 如果您需要int[],那么您将使用一个,如果您需要byte[],则使用比byte[] 更复杂的东西。这里有什么困惑? 如果您使用最紧凑的类型来解决您的问题,它也将是最小的。如果数组很大,这可能会更快,但是对于一个小数组,它可能没有什么区别。 @Defi 即使它确实对单个变量产生了影响,也将是微优化。不幸的是,微优化最受那些还不知道如何编程的人的欢迎,但他们经常不必要地担心他们的程序使用 16 或 17 字节的内存。使用数组时,您通常会处理较大的数量,因此内存节省可能具有一定的意义。当然,在一些非常非常特殊的情况下,您也会对微优化感兴趣。 【参考方案1】:

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

正如 Java 文档中提到的,byte/short 可用于在大型数组中节省内存。

在字节的情况下,声明为字节的变量也可以用作文档的一种形式,因为它的值受范围的限制。 ex of byte (-128 to 127).

还可以看看以下帖子中的优秀答案,

In java, is it more efficient to use byte or short instead of int and float instead of double?

【讨论】:

以上是关于由字节/短而不是整数组成的 Java 数组的内存效率更高吗?的主要内容,如果未能解决你的问题,请参考以下文章

方法在传递 [] 数组而不是来自 malloc 的内存时有效

用Java数组求一个由5个整数组成的数组,按照起元素大小从大到小排列

Linux网络编程--字节序

内存地址是什么

用java编程序 对一个由5个整数组成的数组,按照其内元素的大小依降序排序

用java编程序 对一个由5个整数组成的数组,按照其内元素的从大到小排序