gpt4 book ai didi

Java HotSpot 枚举开销

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:22:56 25 4
gpt4 key购买 nike

假设您有一个“简单的”枚举:

public enum Day {
SUNDAY, MONDAY, TUESDAY, WEDNESDAY,
THURSDAY, FRIDAY, SATURDAY
}

然后你在某处使用它:

Day day = Day.SUNDAY;
...
if(day==Day.SUNDAY) {...}

这与使用整数相比在性能方面(内存和时间)如何?

int day = Day.SUNDAY;
...
public class Day {
public static final int SUNDAY=0;
public static final int MONDAY=1;
}

我们启用了 JIT HotSpot 编译器以及其他“标准”优化。

最佳答案

每当您引用 Day.SUNDAY 时,枚举的性能可能会略有下降,因为 int 常量是一个编译时常量,因此可以内联,而 enum 常量需要 getstatic

比较两个整数或两个引用在所需时间方面当然是相同的,因为您是在比较引用(地址),而不是调用 .equals()

当然,这里的性能影响很小;担心这一点的唯一原因是,如果这是在您的应用程序的性能关键部分,并且分析表明使用 int 更好。枚举在可维护性和代码正确性方面的好处远远超过像这样的轻微低效。

关于Java HotSpot 枚举开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21167417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com