Clojure 函数调用性能
Clojure function call performance
如果 Clojure 函数存储为 vars
,这是否意味着与例如Java?
中的静态方法
如果是这样,是否有任何方法可以在 Clojure 中定义一个函数,以便在调用它时不会降低性能? (或者如果不是,如何避免性能损失?)
是的,需要取消引用 var 才能检索关联的函数,因此与直接静态方法调用相比会有额外的开销(取消引用、强制转换、调用)。
有一个 open enhancement ticket 建议对 Clojure 本身进行更改以提高调用性能,并在评论中进一步提出解决方法建议。
如果 Clojure 函数存储为 vars
,这是否意味着与例如Java?
如果是这样,是否有任何方法可以在 Clojure 中定义一个函数,以便在调用它时不会降低性能? (或者如果不是,如何避免性能损失?)
是的,需要取消引用 var 才能检索关联的函数,因此与直接静态方法调用相比会有额外的开销(取消引用、强制转换、调用)。
有一个 open enhancement ticket 建议对 Clojure 本身进行更改以提高调用性能,并在评论中进一步提出解决方法建议。