在Clojure中声明匿名函数是否昂贵?

Ert*_*tin 8 lisp functional-programming clojure clojurescript

作为Clojure程序员,我们使用大量匿名函数而不考虑它的成本.

在clojure中创建和使用匿名函数的相对成本是多少?

Art*_*ldt 8

Clojure以相同的方式编译所有函数,匿名或命名.然后它在命名空间(包含在var中)中存储指向该函数的指针,以便其他人可以在以后找到它.

编译和用作匿名函数的函数与编译的函数之间的编译时间没有成本差异,然后将指针存储在作为命名空间一部分的var中.

当在运行时使用匿名函数时,大多数时候(可能总是)它们是通过创建闭包(对象)来创建的,因此创建它们的成本是一些内存和一点时间.

如果您在时间关键循环中调用eval,当然您可以在Clojure中创建相同的问题,您可以使用任何其他语言创建.