Хотелось бы уточнить разницу между сравнить и сравнить в классе IntWritable
, ниже кода:
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));
}
Последний вариант должен быть оптимизированным компаратором версии, потому что, если я правильно понял, он пытается выполнить сортировку напрямую без десериализации значений.
Но, читая код, эти два метода кажутся равными производительности.
Может кто-нибудь попытаться объяснить, почему второй лучше?