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

Dennis,虽然JIRA可以处理同名多个补丁,但这对讨论补丁的人来说可能很困惑,并对一些我需要评估的脚本来说也是这样。请考虑给补丁取不同的名字(例如包含版本号),或者在它们过时后删除。

0

评论者:killme2008

Hi,andy

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

0

评论者:killme2008

很高兴看到它有帮助。我用当前主分支比较了补丁,效果也很好。

0

评论者:killme2008

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

0

评论者:alexmiller

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

0

评论者:killme2008

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

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