请在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报告)
...