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

欢迎!请参阅关于页面以了解此工作方式的更多信息。

+2
Clojure

关键字的内联(Symbol)方法使用递归调用以获取一个有效的关键字实例。我认为它可以重写成一个 'for 循环'
来降低方法调用成本。
因此,我开发了此补丁并进行了一些简单的基准测试。在“ant jar”之后运行以下命令行三次:

java -Xms64m -Xmx64m -cp test:clojure.jar clojure.main -e "(时间 (dotimes (连接: n 10000000) (关键字 (str n))))"

补丁之前

"耗时:27343.827 毫秒"
"耗时:26172.653 毫秒"
"耗时:25673.764 毫秒"

补丁之后

"耗时:24884.142 毫秒"
"耗时:23933.423 毫秒"
"耗时:25382.783 毫秒"

看起来补丁让关键字的内联稍微快了一点。

补丁已附上并进行了测试。

谢谢。

附言。我已经签署了贡献者协议,我的电子邮件是[email protected]

9 个答案

0

评论者:alexmiller

看起来很有趣(我认为这会是个很好的改变)。我使用了用于关键字更改的JSON解析基准测试运行了这个,看到了大约3%的提高。

0

评论者:killme2008

更新了补丁,删除了for循环中的'k == null'条款,它是不必要的。

0

评论者:jafingerhut

Dennis,虽然JIRA能够处理同名多个补丁,但是对于讨论补丁的人来说可能会感到困惑,对于一些必须评估的脚本来说也是。请考虑为补丁使用不同的名称(例如,包含版本号),或者移除过时的旧补丁。

0

评论者:killme2008

嗨,andy

感谢你的提醒。我已经删除了旧的补丁。

0

评论者:killme2008

我很高兴看到它很有帮助。我已经将补丁同当前主分支进行了基准测试,它也表现良好。

0

评论者:killme2008

这个补丁可以合并吗?或者它被拒绝了?

0

评论者:alexmiller

作为一个小增强功能,这个补丁目前优先级还不够高,尚未考虑。

0

评论者:killme2008

好的。希望合并它。谢谢。

0
参考: https://clojure.atlassian.net/browse/CLJ-1493(由killme2008报告)
...