我偶然发现了这一点
由于为每个单元格调用了 quote?
并将其用作谓词
#{分隔符 引号 \return \newline}
在编译时不是一个常量表达式,因此对于每个单元格,最终 clojure.lang.RT.set
都将被调用。
对于像这样的无聊输入数据
(def xs (vec (for [_ (range 1000)]
(mapv identity (range 10)))))
最终消耗大约50%的CPU
通过在 write-csv
内部绑定集合并将其关闭,可以轻松避免这种情况
如果编译器可以检测到这一点会更好。
谢谢
Ben