java 短,整数,长性能

2022-09-04 06:10:15

我读到JVM内部存储短,整数和长为4个字节。我从2000年的一篇文章中读到它,所以我不知道它现在有多真实。

对于较新的 JVM,使用短整型/长整型/长整型是否有任何性能提升?自2000年以来,实施的这一部分是否发生了变化?

谢谢


答案 1

整数类型存储在许多字节中,具体取决于确切的类型:

  • 8 位字节
  • 短 16 位,有符号
  • int on 32 位,带符号
  • 长 64 位,带符号

请参阅此处的规范

至于性能,这取决于你对它们做了什么。例如,如果要将文本值分配给字节或短字节,则它们将升级到 int,因为默认情况下,文本值被视为 int。

byte b = 10;  // upscaled to int, because "10" is an int

这就是为什么你不能做:

byte b = 10;
b = b + 1;  // Error, right member converted to int, cannot be reassigned to byte without a cast.

因此,如果您计划使用字节或短句来执行一些循环,则不会获得任何东西。

for (byte b=0; b<10; b++) 
{ ... } 

另一方面,如果您使用字节数组或短字节来存储一些数据,则显然会从它们减小的大小中受益。

byte[] bytes = new byte[1000];
int[] ints = new int[1000];  // 4X the size

所以,我的答案是:这取决于:)


答案 2
long  64 –9,223,372,036,854,775,808 to 9 ,223,372,036,854,775,807 
int   32 –2,147,483,648 to 2,147,483,647 
short 16 –32,768 to 32,767 
byte   8 –128 to 127 

使用你需要的东西,我认为由于范围小,短裤很少使用,而且它是大端格式。

任何性能提升都是最小的,但就像我说的,如果你的应用程序需要的范围大于使用int的短范围。长型可能对你来说太大了;但这一切都取决于您的应用。

仅当担心空间(内存)时才应使用 short,否则使用 int(在大多数情况下)。如果您正在创建数组,请尝试通过声明int和short类型的数组来尝试一下。空头将使用 1/2 的空间,而不是 int。但是,如果您根据速度/性能运行测试,您将看到几乎没有差异(如果您正在处理数组),此外,您唯一节省的就是空间。

另外,评论者提到长,因为长是64位。您将无法在 4 个字节中存储 long 的大小(请注意 long 的范围)。


推荐