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

欢迎!请参见关于页面以获取更多关于如何操作的详细信息。

0
Clojure
重新标记

我偶然发现了这一点
由于为每个单元格调用了 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版发布。

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