由字节/短而不是整数组成的 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个整数组成的数组,按照起元素大小从大到小排列