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

欢迎!请在 关于 页面了解有关如何使用此功能的一些更多信息。

+2
Clojure

关键字(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]

9 个答案

0

评论者:alexmiller

看起来很有趣(我认为会影响很好)。我在一个用于关键词更改的 JSON 解析基准测试上运行了这个基准,看到了大约 3% 的改进。

0

评论者:killme2008

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

0

评论由:jafingerhut发布

迪尼斯,虽然JIRA可以处理同名多个补丁,但对于讨论补丁的人以及我需要评估的一些脚本来说可能会令人困惑。请考虑为补丁分配不同的名称(例如,其中包含版本号),或者删除过时的旧补丁。

0

评论者:killme2008

嗨,andy

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

0

评论者:killme2008

很高兴看到它有所帮助。我用当前主分支对该补丁进行了基准测试,效果也很好。

0

评论者:killme2008

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

0

评论者:alexmiller

作为一个小改进,这个补丁的优先级还不足以被考虑。

0

评论者:killme2008

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

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