2024 Clojure 状态调查 中分享您的想法!

欢迎!请访问 关于 页面以了解更多关于其工作方式的信息。

0
Clojure
重新标记

这是意外发现的
由于对每个单元格调用 quote? 并使用集合作为条件判断
#{separator quote \return \newline}
在编译时不是一个常量表达式,因此对于每个单元格,将最终调用 clojure.lang.RT.set

对于诸如

  (def xs (vec (for [_ (range 1000)]
                 (mapv identity (range 10)))))

它最终会消耗大约 50% 的 CPU

可以通过在 write-csv 内部将其绑定到局部变量中来轻松避免

如果编译器能检测到这一点会很好

谢谢
Ben

1 答案

+1

有关编译器改进的想法,已记录在https://clojure.atlassian.net/browse/CLJ-2702上。

在 data.csv 中进行了更改并作为 1.0.1 版本发布。

by
在哪些情况下,你会提取出来?
...