2024年Clojure调查中分享您的想法!

欢迎!请参阅关于页面获取更多有关该页面如何工作的小信息。

0 投票
Clojure

目前,在生成代码的过程中,Clojure编译器会多次调用Method.getMethod(…)进行冗余调用,例如。

		gen.invokeStatic(Type.getType(Long.class), Method.getMethod("Long valueOf(long)"));

看来是这样的

a) 这些getMethod调用实际上返回了等效的、不可变的常量值
b) getMethod费用较高(进行字符串分析和大量对象分配)
c) 在典型Clojure代码的编译过程中,这些调用非常常见

建议的增强方法是,用所有这些getMethod调用替换为常量静态值。这应该会显著提高编译性能,而不会对行为产生影响。

1 回答

0 投票
参考: https://clojure.atlassian.net/browse/CLJ-1779(由mikera报告)
...