Fra*_*kie 11 java reflection performance
这是一项学术性的练习(免责声明).
我正在构建一个应用程序,它将尽可能快地获利,因为它将与其他人竞争.
我知道使用反射声明一个类(下面的示例)将遭受巨大的惩罚而不是标准声明.
Class mDefinition = Class.forName("MySpecialClassString");
Constructor mConstructor = mDefinition.getConstructor(new Class[]{MySpecialClass.class});
myClass = (MySpecialClass) mConstructor.newInstance(this);
Run Code Online (Sandbox Code Playgroud)
然而,在宣布myClass我是否以标准方式使用它之后,myClass.myMethod() 我是否也会遭遇性能损失,或者它是否会像我以标准方式宣布该类一样?
Rev*_*nzo 14
首次实例化对象时会有性能损失.一旦加载了类,它就像它已经正常实例化一样,并且不会有进一步的性能损失.
更进一步,如果使用反射调用方法,将会有性能损失大约十五次(Java中的默认值),之后反射调用将由JVM重写为与静态编译的调用完全相同.因此,一旦JVM重新编译了该字节码,即使重复反映的方法调用也不会导致性能下降.
有关详细信息,请参阅以下两个链接:
| 归档时间: |
|
| 查看次数: |
2447 次 |
| 最近记录: |