2011-08-25 2 views
2

WritableComparator를 확장하는 것보다 RawComparator를 훨씬 빠르게 구현하고 있습니까? Text/LongWritable/etc와 그 내장 비교기를 보면 기본적으로 DataInput을 사용하는 대신 전체 바이트 배열에서 필드를 직접 읽은 다음 값을 키 클래스에 채우는 것처럼 보입니다.RawComparator를 실제로 훨씬 빠르게 구현하고 있습니까?

필자의 경우, 여러 필드가있는 사용자 정의 키 클래스가 있고 일부 문자열을 포함한 혼합 유형이 있습니다. RawComparator sorta로 처리하려고하면 적어도 표면적으로 보이기 때문에 정확하게 구현하기가 어렵 기 때문에 저를 겁 먹게합니다.

답변

1

네, 그렇습니다. 데이터 비교가 바이트 대 바이트 비교에 100 % 일치 할 때 원시 비교자가 분명히 좋습니다.

apache의 Thrift 나 avro와 같은 라이브러리를 사용하여 이진 직렬화를 처리 할 수 ​​있습니다.이 경우 원시 데이터가 불일치하게 2 진수로 인코딩되는 것에 대해 걱정할 필요가 없습니다.

이진 비교는 항상 객체 직렬화보다 빠릅니다 ...하지만 "그 정도"의 마스터입니까? 글쎄 그건 당신이 "그렇게 많이"어떻게 정의하는지에 달려 있습니다 :)

관련 문제