java短整型长整型性能

标签 java performance integer long-integer short

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

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

谢谢

最佳答案

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

  • 8位字节
  • 短 16 位,有符号
  • 32 位整数,有符号
  • 64 位长,有符号

参见 spec here .

至于性能,这取决于您使用它们做什么。 例如,如果您将文字值分配给 byte 或 short,它们将被放大为 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.

因此,如果您计划使用 bytes 或 shorts 来执行一些循环,您将一无所获。

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

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

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

所以,我的回答是:视情况而定:)

关于java短整型长整型性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2380696/

相关文章:

java - 访问 JUnit 测试用例中的列表

java - JedisConnectionException 读取超时

c# - 如何将有符号整数转换为无符号整数?

c++ - 为什么在 g++ std::intmax_t 中不是 __int128_t?

java - 如何在Java中正确从apache commons导入

java - 需要帮助使 MyBatis 能够处理糟糕的数据库设计

c# - Entity Framework - 批量更新/插入/删除缓慢

c# - 将结构转换为对象以进行空值比较不会导致装箱吗?

performance - F#中的慢尾递归

java - Java 中 Integer 对象的比较运算符的安全性