【发布时间】:2023-03-22 08:16:01
【问题描述】:
鉴于这些代码示例:
示例 1
public class SomeClass {
private static final int onlyUsedByMethodFoo = 1;
// many lines of code
public static void foo() {
final String value = items[onlyUsedByMethodFoo];
}
}
示例 2
public class SomeClass {
// many lines of code
public static void foo() {
final int onlyUsedByMethodFoo = 1;
final String value = items[onlyUsedByMethodFoo];
}
}
我更喜欢第二个代码示例,因为该值接近使用它的位置。无论如何,它仅由 Foo() 使用。即使经常调用 Foo() ,我也看不到将其声明为全局值的优势。我可以看到的全局静态值的唯一优势可能是性能,但目前还不清楚它会有多大的性能优势。也许 Java 意识到了这一点并优化了字节码。
关于性能,是否值得在全局范围内声明一个常量值?性能提升是否证明将常量值移到远离程序员使用和读取的位置是合理的?
【问题讨论】:
-
为什么必须从内存中查找一个值而不是在字节码的方法主体中拥有文字权才能提高性能?
-
This question 你可能会感兴趣。
标签: java performance