关键字的intern(符号)方法使用递归调用来获取一个有效的关键字实例。我认为它可以改写为一个'for循环'来减少方法调用的开销。
以减少方法调用成本。
因此,我开发了此补丁并做了一些简单的基准测试。在运行'ant jar'之后,请在命令行中运行以下命令三次:
java -Xms64m -Xmx64m -cp test:clojure.jar clojure.main -e "(time (dotimes (link: n 10000000) (keyword (str n))))"
在打补丁之前
"执行时间:27343.827毫秒"
"执行时间:26172.653毫秒"
"执行时间:25673.764毫秒"
打补丁之后
"执行时间:24884.142毫秒"
"执行时间:23933.423毫秒"
"执行时间:25382.783毫秒"
看起来补丁让关键字内部处理更快了一些。
补丁附于此处并进行测试。
谢谢。
附言。我已经签署了捐助者协议,我的邮箱是[email protected]。