Kev*_*lan 7 java performance enums
假设你有一个"简单"的枚举:
public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY
}
Run Code Online (Sandbox Code Playgroud)
然后你在某个地方使用它:
Day day = Day.SUNDAY;
...
if(day==Day.SUNDAY) {...}
Run Code Online (Sandbox Code Playgroud)
如何比较使用整数的性能(内存和时间)?
int day = Day.SUNDAY;
...
public class Day {
public static final int SUNDAY=0;
public static final int MONDAY=1;
}
Run Code Online (Sandbox Code Playgroud)
我们启用了JIT HotSpot编译器以及其他"标准"优化.
每当引用Day.SUNDAY时,枚举可能会有轻微的性能损失,因为int常量是编译时常量,因此可以内联,而enum常量需要a getstatic.
比较两个整数或两个引用当然在所需时间方面是相同的,因为您要比较引用(地址),而不是调用.equals().
当然,这里的表现是微不足道的; 担心这个问题的唯一原因是,如果这是您的应用程序中性能关键部分,并且分析显示使用整数更好.枚举对可维护性和代码正确性的好处远远超过像这样的轻微低效率.