如果Clojure函数存储为vars
,这是否意味着与例如Clojure函数相比,执行它们还有一个额外的查找Java中的静态方法?
如果是这样,有没有办法在Clojure中定义一个函数,以便在没有性能损失的情况下调用它? (或者如果没有,那么如何避免性能损失?)
答案 0 :(得分:2)
是的,需要对var进行derefed以检索关联的函数,因此与直接静态方法调用相比,还有额外的开销(deref,cast,invoke)。
有一个open enhancement ticket建议更改Clojure本身以改进调用性能以及在评论中进一步提出的解决方法建议。