我想在代码下方的类IntWritable
中澄清compareTo和compare之间的区别:
IntWritable.compareTo :
public int compareTo(IntWritable o) {
int thisValue = this.value;
int thatValue = o.value;
return (thisValue<thatValue ? -1 : (thisValue==thatValue ? 0 : 1));
}
IntWritable.compare :
public int compare(byte[] b1, int s1, int l1,
byte[] b2, int s2, int l2) {
int thisValue = readInt(b1, s1);
int thatValue = readInt(b2, s2);
return (thisValue<thatValue ? -1 : (thisValue==thatValue ? 0 : 1));
}
后一个应该是一个优化的比较器版本,因为如果我理解得很好,它将尝试直接排序而不对值进行反序列化。
但是在阅读代码时,这两种方法看起来像性能一样。
有人可以解释为什么第二个更好吗?