Java反射:为什么它如此慢?

8 浏览
0 Comments

Java反射:为什么它如此慢?

我一直以来都避免使用Java反射,仅仅是因为它被认为执行速度慢。在我当前项目的设计中,如果能够使用反射,我的代码将更加可读和优雅,所以我决定尝试一下。

我简直惊讶于它的不同之处,有时候运行时间几乎慢了100倍。即使在这个简单的例子中,只是实例化一个空类,这也是难以置信的。

class B {
}
public class Test {
    public static long timeDiff(long old) {
        return System.currentTimeMillis() - old;
    }
    public static void main(String args[]) throws Exception {
        long numTrials = (long) Math.pow(10, 7);
        long millis;
        millis = System.currentTimeMillis();
        for (int i=0; i c = B.class;
        for (int i=0; i

所以我的问题是:

  • 为什么会这么慢?我做错了什么吗?(即使上面的例子也展示了这种差异)。我很难相信它真的比普通实例化慢100倍。
  • 有没有其他更好的方法来处理将代码视为数据(请记住我现在只能使用Java)
0