IntWritable оптимизированный компаратор - PullRequest
0 голосов
/ 07 марта 2019

Хотелось бы уточнить разницу между сравнить и сравнить в классе 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));
    }

Последний вариант должен быть оптимизированным компаратором версии, потому что, если я правильно понял, он пытается выполнить сортировку напрямую без десериализации значений.

Но, читая код, эти два метода кажутся равными производительности.

Может кто-нибудь попытаться объяснить, почему второй лучше?

...