2016-06-17 2 views
2

"코더"의 목적을 이해하는 데 문제가 있습니다. 필자는 특정 객체를 바이트 형식으로 인코딩하는 방법과 평등 및 해시 코드를 평가하는 방법을 데이터 흐름에 "가르치기"위해 코더를 선택한다는 점을 이해합니다.우리가 선택한 코더가 성능에 크게 영향을 줍니까?

기본적으로 실수로 실수로 거의 모든 사용자 정의 클래스에 "serializable 구현"이라는 단어를 넣는 경향이 있습니다. 이렇게하면 데이터 흐름이 불평하지 않는 경향이 있습니다. 그러나 이러한 클래스 중 일부는 거대한 개체이기 때문에 성능에 문제가 있는지 궁금하네요. 대신 정확히 하나 또는 두 개의 필드를 사용하여 같음 및 해시 코드 등을 결정할 수있는 사용자 지정 코더를 구현해야합니다. 이게 말이 되니? 달리 말하면 기본 직렬 코더 대신 커스텀 코더 (하나 또는 두 개의 작은 기본 필드 만 사용할 수 있음)를 생성하면 매우 큰 클래스의 성능이 향상됩니까?

답변

2

Java 직렬화는 다른 형식의 인코딩과 비교할 때 매우 느리며 성능 문제가 발생할 수 있습니다. 그러나 개체의 일부만 serialize하면 나머지 개체가 프로세스간에 전송 될 때 삭제됩니다.

직렬화를 사용하고 거의 그냥 쉽게, 당신은 자동으로 클래스에서 브로 스키마를 추론 할

@DefaultCoder(AvroCoder.class) 

이와 주석으로 클래스를 AvroCoder를 사용할 수있는 훨씬 나아. 이것은 제네릭 형식에서는 작동하지 않으므로이 경우 사용자 지정 코더를 사용하는 것이 좋습니다.

관련 문제