目前,在生成代码的过程中,Clojure编译器会多次调用Method.getMethod(…)进行冗余调用,例如。
gen.invokeStatic(Type.getType(Long.class), Method.getMethod("Long valueOf(long)"));
看来是这样的
a) 这些getMethod调用实际上返回了等效的、不可变的常量值
b) getMethod费用较高(进行字符串分析和大量对象分配)
c) 在典型Clojure代码的编译过程中,这些调用非常常见
建议的增强方法是,用所有这些getMethod调用替换为常量静态值。这应该会显著提高编译性能,而不会对行为产生影响。