请分享您的想法,参加 2024 年 Clojure 状态调查!

欢迎!请查看 关于 页面了解此工作的更多信息。

0
Clojure

目前参数装箱效率较低,原因如下:
1. 当参数类型非基本类型时,会不必要地调用 Class.cast(..)。
2.装箱参数时,会分配一个不必要的额外 Object(link: ) 数组。

此补丁解决了这些问题,同时不改变其他行为。所有测试均通过。

7 个答案

0

评论者:alexmiller

存在问题的示例代码?

基准测试前/后?

0

评论者:mikera

嗨 alex,我正在尝试改进反射的快路径,这将是一系列更改,包括 clj-1784 以及我有的一些其他想法。

对于每次更改进行广泛的讨论和基准测试可能并不 productive。是否可以为一个包含基准测试的整体影响创建一个新的问题?

我很愿意这样做,但如果您能表明这项工作将被接受,前提是展示了整体改进,那将很有帮助。如果大家对此空间内的性能改进不感兴趣,我不想在 Clojure 开发上浪费时间。而且我也没有时间对每个更改进行广泛的讨论。

0

评论者:alexmiller

每个票据应确定一个特定问题,并提出一个有帮助的证据支持的解决方案。如果有多个问题,它们可能以不同的速度移动。

如果您发现了热点,我们将很高兴来查看它。但我们必须从一个要解决的问题开始,而不是仅仅:“这里有一些变化”。如果变化使事情变得更好,那么您应该能够证明这一点。

0

评论者:alexmiller

我认为,针对反射问题,正确的答案不仅仅是移除反射,对此我仍然表示怀疑。但在我收到一个问题时,我无法评估这一点。

0

评论者:mikera

问题描述中指出的问题是这(反射)低效(因此对于使用反射的用户来说速度较慢)。如果您有其他想要的方式,可以提出建议吗?

是否应该使用反射,与提高反射本身的速度是正交的。我同意在可能的情况下人们应该使用类型提示,但许多人没有时间理解它/不知道如何正确使用/没有意识到它在发生,所以任何对这些情况的改进都应该受到欢迎?

您还没有回答我的问题:您希望将所有内容合并为单一的性能改进票据,还是不希望合并?

0

评论者:alexmiller

这个票据的标题是“在反射期间优化参数装箱”,这是一个解决方案,而不是问题。我需要的是一个类似于“反射使用装箱参数很慢”的标题,以及一个带有示例代码的描述,以展示问题。(这个示例代码经常是测试的一个很好的模板,这个测试也应该包含在补丁文件中。)

接下来,我需要证据来证明您建议的改变改善了问题。对于性能问题,我具体在寻找的是前后基准测试结果,最好是使用准则这样的测试工具,这样我可以有信心认为所得到的收益是真实的。

从优先级的角度来看,我不认为反射性能是一个高优先级的问题,因为最好的答案可能是:不要使用反射。尽管如此,我愿意考虑它,尤其是在有有说服力的例子,表明可能很难移除反射或其中反射的发生特别不明显的情况下。

至于您最后的提问,我们更愿意考虑个别问题,而不是“一大堆变化”,所以分开会更好。

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