【发布时间】:2014-01-16 16:31:04
【问题描述】:
假设你有一个“简单”的枚举:
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 编译器以及其他“标准”优化。
【问题讨论】:
-
您可以比较生成的字节码。
-
有时这与性能无关。
-
这个问题主要是学术性的。但是,最近我遇到了 1000 ns 左右的接口调用开销;当我删除灵活的基于接口的代码时,性能显着提高。那是巨大的!可能接口调用的函数不能内联?
-
@Jim garrison:我有一个“可靠的猜测”界面,用于将图像渲染到屏幕上,您可以在其中插入任何功能,启用 HotSpot 等。当我重新做时没有干扰(较少可维护的代码),它以每秒帧数显着加快。因此,这种性能冲击具有实际应用。我的函数相当昂贵(100 ns),所以令人惊讶的是接口开销是一个真正影响的瓶颈。
标签: java performance enums