2024 Clojure 状况调查!中分享您的看法。

欢迎!请参阅关于页面以获取更多关于这一操作的信息。

0
Clojure

目前参数装箱之所以在 clojure.lang.Reflector 中效率低下,有以下两个原因:
1. 当参数类型不是原始类型时,它会对 Class.cast(..) 进行不必要的调用。
2. 在装箱参数时,它分配了一个不必要的额外 Object 数组。

此补丁修复了这些问题,同时不会更改其他行为。所有测试均通过。

7 回答

0

由 alexmiller发表的评论

这个是问题的示例代码吗?

效果基准测试前后?

0

由 mikera 发表的评论

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

我认为就每个更改进行广泛的讨论和基准测试并不太有意义。是否可以为此更改创建新的工单并一起进行基准测试以衡量整体影响?

我很乐意这样做,但如果能够表明整体上存在改进,这将有所帮助。我不想在 Clojure 开发上浪费时间,如果你们对此空间的性能改进不感兴趣。而且我没有时间就每个更改进行广泛的讨论。

0

由 alexmiller发表的评论

每张票应该指明一个具体问题,并依据证据提出解决方案,证明该方案有助于解决问题。如果存在多个问题,它们的发展速度可能各不相同。

如果您发现了热点,那么我们愿意查看它。但我们必须从需要解决的问题开始,而不仅仅是:“这里有一些修改”。如果这些修改改善了情况,那么您应该能够证明这一点。

0
回答者:

由 alexmiller发表的评论

我认为,对于反射问题,真正的答案可能不仅仅是去除反射。但在我看到问题之前,我无法进行评估。

0
回答者:

由 mikera 发表的评论

问题在于,正如描述中所说,这是低效的(因此在反射的使用者中速度较慢)。如果您有其他希望看到的方式来表述,请提出建议?

人们是否应该使用反射与加快反射速度本身并不矛盾。我同意人们在可能的情况下应使用类型提示,但很多人没有时间弄明白/不知道如何正确操作/没有意识到它的发生,所以对于这些情况的任何改进都应该是受欢迎的?

另外,您还没有回答我的问题:您希望汇集到一个单独的反射性能改进票中,还是不希望?

0
回答者:

由 alexmiller发表的评论

该票的标题是“优化反射过程中的参数装箱”。这是一个解决方案,而不是问题。我希望看到的是一个类似“带有装箱参数的反射速度慢”的标题,以及一个以示例代码开始进行的描述,该代码展示了问题。(这个示例代码通常是应该包含在补丁中的测试的优秀模板。)

接下来,我需要证据证明您提出的更改改善了问题。对于性能问题,我特别想看到一个前/后基准,最好是用criterium之类的测试工具,这让我有信心确实获得了收益。

从优先级的角度来看,我不认为反射性能是一个高优先级的任务,因为最好的答案可能是:不要使用反射。尽管如此,我也愿意考虑它,特别是在有引人注目的例子可能很难移除反射或反射很难被发现时。

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

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