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