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毫秒"

看起来这个补丁使关键字Intern稍微快了一点。

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

感谢。

附言:我已经签署了贡献协议,我的电子邮箱是[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 报告)
...