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 毫秒"
"执行时间:24884.142 毫秒"

看起来补丁使关键词的内联略快一些。

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

谢谢。

附言:我已经签署了贡献者协议,我的邮箱是[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](https://clojure.atlassian.net/browse/CLJ-1493)(由killme2008提交)
...