繁体   English   中英

在Java中使用字节和短数据类型时的处理器使用率

[英]Processor usage when using byte and short data types in Java

我在“ 从Java开始”中阅读了以下内容 从控制结构到数据结构 -Tony Gaddis的第3版 ,第67页:

在算术表达式中使用字节或short数据类型的值时,它们会暂时转换为int值。

这是指Java。

我想知道是否使用字节或短数据类型进行数学运算,尽管它们节省了内存,但由于转换为int数据类型而不是仅使用int数据类型,因此会增加处理器使用率。

例如:

做这个:

byte x = 2;
byte y = 3;
int z = x + y;

使用更多的处理器:

int x = 2;
int y = 3;
int z = x + y;

我知道第一个示例使用的内存更少。 而且我也了解,处理器使用方面的差异(如果有的话)将很小。

为了进行计算(如x + y),处理器需要将x和y都加载到寄存器中(取决于体系结构,但是至少x或y中的一个应该在寄存器中)。 寄存器的大小为32位或64位(至少在可以使用Java的平台上)。 因此,无论如何此值都将转换为32(64)位整数。 它是自动完成的,并且不会消耗额外的CPU资源。 因此计算速度将相同。

是的,如果需要执行计算,将信息存储为字节或字节数组将增加处理器的负担。

通常,没有理由将int保存为字节,除非您要存储这么多int足够长的时间,以至于它们会填满您的可用HEAP空间。 如果仅将它们存储几个周期来执行计算,则可能不需要将它们存储为字节,因为一旦不再使用它们,它们就会被GC自动删除。

如果要在int上一遍又一遍地使用相同的组,并将它们存储很长一段时间,另一种选择可能是创建一个Integer池。 通过这样做,您可以在内存中创建一个例如一百万个唯一整数的池,并且只要您想使用该特定int执行计算,就可以在该内存中简单地保存一个指向该Integer的指针。 最终可能会比根据您的应用程序将每个int单独保存为一个字节节省更多的空间...

在不了解特定应用程序的情况下,很难推荐特定的操作方法。 您能否提供更多信息?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM