我刚刚发现了这个说法:“通过首先比较最有可能不同的项目,可以大大提高 compareTo 的性能”。这是真的吗?如果是,为什么?
问问题
122 次
3 回答
5
考虑一个具有多个属性的类。为了比较实例,您需要比较它们的一些属性。如果除一个之外的所有属性都相等,则需要进行的比较量取决于属性比较的顺序:如果您碰巧首先比较不同的属性,则通过一次比较即可得到结果。但是,如果最后比较不同的属性,则必须进行n次比较才能获得相同的结果。
正如@Kdeveloper 所指出的,除非您批量进行大量类似的比较,否则性能差异可能并不明显。但另一个好处是恕我直言逻辑排序:这让您考虑类属性之间的逻辑关系。总的来说,由于这是一个无中断的优化(即它不会使代码更难阅读和维护),我认为大部分时间都值得这样做。
于 2011-02-28T13:00:24.077 回答
1
对,是真的
因为如果你把最有选择性的比较放在第一位,你平均会为每次比较执行更少的代码。但是由于这些测试通常非常快,因此只有在比较许多对象时(例如对大集合进行排序时),速度改进才会很明显。
于 2011-02-28T13:00:20.967 回答
0
这是真的吗?如果是,为什么?
嗯,从字面上看,没有。无论历史如何,该compareTo
方法都将花费同样长的时间来执行。
如果它可以在特定实现中获得任何整体性能?是肯定的。但是为了能够回答你的问题,我们需要更多关于这种情况的背景信息。
于 2011-02-28T13:00:11.257 回答