【问题标题】:Is it wise to use 'short' instead of 'int' for loops with a limit < 100? [duplicate]对限制 < 100 的循环使用“short”而不是“int”是否明智? [复制]
【发布时间】:2015-11-05 05:41:14
【问题描述】:

JVM 文档指出 short 是作为 int 实现的,所以我想知道使用它是否有任何好处。它可能会使用更少的内存或更快的处理速度吗?

【问题讨论】:

  • 您阅读的文档是正确的。如果您不将其存储在数组中,那根本没有意义。

标签: java performance optimization jvm primitive


【解决方案1】:

这只是一种意见,但我会说这不明智。

  • 你偏离了大家都知道的标准。人们突然需要考虑你的 for 循环的正确性和意图。这浪费了宝贵的开发时间,这可能比几个字节的内存还要昂贵。
  • 当有人从 100 更改为更大的值时,它还会引入一些细微的错误:编译器不会抱怨,但您可能正在创建无限循环。

例如

for (short s = 0; s < Short.MAX_VALUE + 1; s++)

永不停止,因为s++ 无声溢出,而s &lt; Short.MAX_VALUE + 1 中的s 被提升为int

使用小于 int 的类型最好保留在您需要 2 字节值的语义及其溢出方式的时候,而不是为了节省空间。

【讨论】:

    【解决方案2】:

    这并没有真正的好处,请参阅类似问题的答案:

    https://stackoverflow.com/a/14532302/5490728

    它甚至谈到可能的性能损失。

    此外,正如 zapl 已经指出的那样,合作者可能不习惯它并从中产生错误。

    (我读到应该可以将此问题标记为具有 15 名声望的重复问题,但我在“标志”菜单中找不到该选项。我希望这种回答方式也可以。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 2012-10-03
      • 2011-04-21
      • 1970-01-01
      • 1970-01-01
      • 2016-11-30
      相关资源
      最近更新 更多