请在 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 发表

更新了补丁,移除了 for 循环中的 '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 报告)
...