关键字的 intern(Symbol)方法使用递归来获取一个有效的关键字实例。我认为它可以通过 '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] 。