Android java性能:从自定义类或外部类调用静态方法

时间:2014-06-13 17:07:50

标签: java android performance static

从高性能的角度来看,调用外部类static方法比在同一个类中调用static方法要慢?

2 个答案:

答案 0 :(得分:2)

不,永远不会。将方法可见性分开,静态方法只是C语义中的​​全局函数。因此,它们属于什么类别,甚至在Android上都不重要。

答案 1 :(得分:0)

这取决于。请考虑以下事项:

public class Outer {
    /*private*/ static void outerMethod() {
        // do stuff
    }

    static class Inner {
        public void doStuff() {
            outerMethod();
        }
    }
}

doStuff()方法的字节码如下所示:

     0: invokestatic  #2                  // Method Outer.outerMethod:()V
     3: return        

但是,如果我们将outerMethod()设为私有,则代码将显示为:

     0: invokestatic  #2                  // Method Outer.access$000:()V
     3: return        

问题是内部类不能直接调用外部类方法,因为它是私有的。编译器通过创建合成access$000()方法来解决此问题,该方法除了调用outerMethod()之外什么都不做。除非AOT或JIT编译器识别出模式并将其优化,否则调用访问器方法的速度会慢一些。

因此,如果它也被声明为私有,则调用外部类静态方法可能会慢