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

标签 clojure functional-programming lisp clojurescript

作为 Clojure 程序员,我们使用了很多匿名函数而不考虑成本。

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

最佳答案

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

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

当在运行时使用匿名函数时,大部分时间(也许总是)它们是通过闭包(对象)创建的,因此创建它们的成本是一些内存和一点时间。

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

关于clojure - 在 Clojure 中声明匿名函数是否很昂贵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39862579/

相关文章:

clojure - 这个 `doseq`语句和 `for`语句有什么区别;在 Clojure 中读取文件?

java - Java 8 消费者什么时候比可运行接口(interface)更受欢迎?

lisp - 确保 lisp 中的 2 个列表长度相同的最简单方法是什么?

lisp - SBCL "subst"效率

emacs - 为什么在 LISP 中 setq() 时没有出现关于 undefined variable 的错误?

clojure - 当前命名空间中没有运行测试时如何禁用测试装置?

clojure - 获取html标签的属性 - Enlive

Java 11 功能流程在方法调用上推断出错误的类型

clojure - 无法导入 Clojure 记录

oop - Scala函数与类二分法