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

欢迎!请查阅 关于 页面,了解更多此处的相关信息。

+2
Clojure

关键词的 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]

9 个回答

0

由 alexmiller 发表的评论

看起来很有趣(在我看来是一个很好的改变)。我在我使用的用于关键字更改的 JSON 解析基准测试上运行了这个补丁,并看到了大约 3% 的改进。

0

由 killme2008 发表的评论

已更新补丁,移除了 for 循环中的 'k == null' 条件,这并不必要。

0

由 jafingerhut 发表的评论

德尼斯,虽然 JIRA 可以处理具有相同名称的多个补丁,但这会让人在讨论补丁时感到困惑,对于某些我必须评估的脚本也是如此。请考虑给补丁使用不同的名称(例如,包含版本号的名称),或者在它们过时后删除。

0
by

由 killme2008 发表的评论

你好,andy

感谢您的提醒。我已删除旧补丁。

0
by

由 killme2008 发表的评论

很高兴看到它是有帮助的。我已经和当前主分支的补丁进行了基准测试,效果也很好。

0
by

由 killme2008 发表的评论

这个补丁可以合并吗?还是被拒绝了?

0
by

由 alexmiller 发表的评论

作为一个小的增强,这个补丁的优先级还不够高,还没有被考虑。

0
by

由 killme2008 发表的评论

没问题。希望能合并它。谢谢。

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