访问静态字段:本地缓存句柄

时间:2010-09-07 05:35:02

标签: java android performance

我有一个类结构,如下面的存储静态最终常量:

public final class A{
  //..list of constants
 public final class B{
  //..list of constants
  public final class C{
  // ..list of constants
  }
 }
}

如果我需要在某个线程中访问C类的静态常量(比如说它们大约10个),那么这两种方法中的哪一种更好(更快)?它甚至有所作为吗?这是一些特定于VM的优化吗?我在Android平台上运行此代码:

void doIt(){
A.B.C temp;
S.O.P(temp.FIELD1);
S.O.P(temp.FIELD2);
...
S.O.P(temp.FIELD10);
}

//OR

void doIt(){
S.O.P(A.B.C.FIELD1);
S.O.P(A.B.C.FIELD2);
...
S.O.P(A.B.C.FIELD10);
}

1 个答案:

答案 0 :(得分:2)

第一个例子不会编译,因为你没有初始化变量'temp'。既然你说你只是访问静态成员,实例化它将是完全没有意义的。

静态最终原语通常会被编译器内联,所以就性能而言,它从你得到它的地方绝对没有区别。