(t-6ren">
gpt4 book ai didi

optimization - 没有在本地绑定(bind)时,核心中的函数如何运行得更快?

转载 作者:行者123 更新时间:2023-12-03 15:34:18 25 4
gpt4 key购买 nike

这个例子说明了一切:

user> (time (dotimes [i 10000000] (inc i)))
"Elapsed time: 413.948711 msecs"
nil
user> (time (let [new-inc inc] (dotimes [i 10000000] (new-inc i))))
"Elapsed time: 1034.722729 msecs"
nil

最佳答案

我相信编译器会内联某些核心功能,例如 inc ,尤其是在应用于原始参数时。

当您使用 inc作为常规函数(例如,传递给高阶函数,使用 let 进行别名等),性能可能因此更差,因为它失去了内联的能力。额外的开销来自进行额外的函数调用,也可能是装箱一个或多个参数的成本。

这不是 Clojure 的限制,只是反射(reflect)了编译器在优化方面还不是很复杂的事实。您可能会期望这样的事情在 Clojure 的 future 版本中会变得更好。

关于optimization - 没有在本地绑定(bind)时,核心中的函数如何运行得更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16950761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com