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