Android的Java性能:从自我类或外部类调用静态方法(Android java perform

2019-10-30 11:29发布

通过一个角度高性能点,调用一个外部类static方法比调用较慢static中同一类的方法?

Answer 1:

没有永不。 保留方法知名度分开,静态方法在C意义上只是全局函数。 因此,它不能不管,他们属于什么类,甚至没有在Android上。



Answer 2:

这取决于。 考虑以下:

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编译器可识别图案,并优化它。

所以,调用外部类的静态方法可能会比较慢,如果它也声明为private。



文章来源: Android java performance: invoking static method from self class or outer class