java 短,整数,长性能
2022-09-04 06:10:15
我读到JVM内部存储短,整数和长为4个字节。我从2000年的一篇文章中读到它,所以我不知道它现在有多真实。
对于较新的 JVM,使用短整型/长整型/长整型是否有任何性能提升?自2000年以来,实施的这一部分是否发生了变化?
谢谢
我读到JVM内部存储短,整数和长为4个字节。我从2000年的一篇文章中读到它,所以我不知道它现在有多真实。
对于较新的 JVM,使用短整型/长整型/长整型是否有任何性能提升?自2000年以来,实施的这一部分是否发生了变化?
谢谢
整数类型存储在许多字节中,具体取决于确切的类型:
请参阅此处的规范。
至于性能,这取决于你对它们做了什么。例如,如果要将文本值分配给字节或短字节,则它们将升级到 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
所以,我的答案是:这取决于:)
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 的范围)。