1
10
F实现使用结果键的结构比较。
(也排序)
两个operator.compare和comparisonIdentity.structure.compare都变为(最终)
但是对于运算符来说,这条路径完全是内联的,因此JIT编译器最终将插入一条直接的双比较指令,除了委托调用(在这两种情况下都是必需的)之外,没有额外的方法调用开销。 Sortby使用比较器,因此将执行其他虚拟方法调用,但基本上是相同的。
相比之下,orderby函数还必须通过虚拟方法调用来实现相等性(使用
就是说这就是全部 猜测 . 如果这一领域是你在绩效方面的关注点,那么你应该简单地 轮廓 想知道花了多少时间。 如果您希望看到排序/复制更改会产生什么影响,请尝试以下替代方法:
我在repl中得到了一些合理的百分比加速,输入序列非常大(>百万),但没有什么比数量级更重要的了。你的里程,一如既往,可能会有所不同。 |
2
0
当排序为O(n.log(n))时,x2的差异不大。
数据结构上的微小差异(例如优化输入
而f目前是beta版本(没有太多的关注优化与正确的语言和库),加上f函数的一般性(支持部分应用程序等)可能导致调用速度略有放缓:这足以解释不同之处。 |