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

欢迎!请参阅关于页面以获取更多关于如何使用本站的信息。

+2
Clojure

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

9 个答案

0

评论者:alexmiller

看起来很有趣(在我看来也会是个不错的改变)。我将其应用于我用于关键字更改的 JSON 解析基准测试中,并看到了 ~3% 的改进。

0

评论者:killme2008

更新了补丁,删去了 for 循环中的 'k == null' 条件,这是不必要的。

0

评论者:jafingerhut

亲爱的Dennis,尽管JIRA可以处理同名多次的补丁,但对于讨论补丁的人来说可能会很困惑,而且对于一些我需要评估的脚本来说也是如此。请考虑给补丁起不同的名称(例如包含版本号),或者在它们过时的时候移除它们。

0

评论者:killme2008

嗨,andy

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

0

评论者:killme2008

很高兴看到这有助于我。我用当前master分支对该补丁进行了基准测试,它也还好。

0

评论者:killme2008

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

0

评论者:alexmiller

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

0

评论者:killme2008

好。希望合并。谢谢。

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