2024年Clojure状态调查!分享您的看法。

欢迎!请参阅关于页面以获取有关如何使用此工作的更多信息。

0
Clojure

目前参数装箱效率不高,原因如下:
1. 当参数类型非原始类型时,它执行了不必要的Class.cast(..)调用。
2. 在装箱参数时,分配了一个不必要的额外Object数组。

此补丁修复了这些问题,且没有改变其他行为。所有测试都通过。

7 个回答

0

由:alexmiller评论

示例代码,这里有问题吗?

基准测试前后?

0

由:mikera评论

嗨alexmiller,我想改进反射的快速路径,这将是一系列更改,包括clj-1784和一些其他想法。

我认为在每个单独的更改上广泛讨论/基准测试并不富有成效。是否为所有更改创建一个新票据,并附带基准测试以衡量总体影响会更好?

我很乐意这么做,但如果您能表明这些更改将被接受,前提是可以证明有了总体改进,那就更好了。我不想浪费在Clojure开发上的精力,如果你们对此空间中的性能改进不感兴趣。而且我没有时间去讨论每个个体的更改。

0

由:alexmiller评论

每张票据都应该指明一个具体问题,并提出一个有证据支持的解决方案。如果有多个问题,它们可能以不同的速度移动。

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

0

由:alexmiller评论

我想说我仍然怀疑正确的反射问题的答案不仅仅是移除反射。但是,除非你提供一个问题,我无法评估这一点。

0

由:mikera评论

问题在于它低效(因此对于反射的用户来说速度慢),如描述中所言。如果您有其他您希望看见它表述的方式,可以提建议吗?

是否应该使用反射与使反射本身更快是正交的。我同意在可能的情况下人们应该使用类型提示,但许多人没有时间去弄清楚/不知道如何正确做/没有意识到它在发生,所以当然,任何对这种情况下提出的改进都应受到欢迎?

另外,您还没有回答我的问题:您是否希望所有内容都合并成一个单独的反射性能改进票据,还是不合并?

0

由:alexmiller评论

这个票据的标题是“优化反射过程中的参数装箱”。这只是一个解决方案,而不是问题。我想要的标题是“使用装箱参数的反射速度慢”,并在描述中使用一些示例代码来展示问题。(这些示例代码经常成为一个很好的测试模板,应该包含在补丁中。)

我接下来要寻找的证据显示您提出的更改能够提高问题。对于一个性能问题,我特别想看到基准测试的对比,最好是使用criterium这样的测试工具,这样我才能对我的收益有信心。

从优先级的角度来看,我认为反射性能不是一个高优先级的问题,因为最好的答案是:不要使用反射。尽管如此,我愿意考虑这一点,特别是如果有令人信服的示例显示可能难以去除反射,或者反射发生得非常不明显。

关于您的问题,我们更愿意考虑个别问题,而不是“一大堆变动”,所以分开处理会更好。

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