可写入的优化比较器

时间:2019-03-07 16:30:24

标签: hadoop serialization mapreduce writable

我想在代码下方的类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));
    }

后一个应该是一个优化的比较器版本,因为如果我理解得很好,它将尝试直接排序而不对值进行反序列化。

但是在阅读代码时,这两种方法看起来像性能一样。

有人可以解释为什么第二个更好吗?

0 个答案:

没有答案