2016-06-16 2 views
2

안녕하세요. 최근 Hazecast 버전 및 일련 번호와 관련하여 한 가지 질문이 있습니다.Hazelcast 직렬화 중첩 된 객체

class Customer implements DataSerializeable { 
    List<Address> adresses; 
    CustomerDetails details; 
} 

두 클래스 모두 Address 및 CustomerDetails는 DataSerializeable을 구현합니다. 우리는 순간을 직렬화하는 방법은 다음과 같습니다

public void writeData(ObjectDataOutput out) throws IOException { 
    address.writeData(out); 
    short size = details.size(); 
    out.writeShort(size); 
    for (CustomerDetail detail: details) { 
     detail.writeData(out); 
    } 

} 

내가 몇 이상 몇 가지 성능 테스트를 실행 : 몇 가지 예에서
public void writeData(ObjectDataOutput out) throws IOException { 
    out.writeObject(address); 
    out.writeObject(details); 
} 

온라인 나는 그들이 같은 클래스를 직렬화하는 방법입니다 것을보고 milion records 나는 성능면에서 큰 차이를 관찰 할 수 없었다.

중첩 된 객체의 직렬화를 수행하는 권장 방법은 무엇입니까? 누군가가 최신 Hazelcast 버전 3.6에 관해 의견을 제시 할 수 있습니까?

우리가 ArrayList를, LinkedList의, HashMap에 대한 시리얼 라이저를 최적화 한 이후 눈에 띄는 차이가 없습니다

+0

마지막 예에서 크기가 누락 된 행이 있습니다. 그 외에도, 첫 번째 코드 스 니펫은 콜렉션 특정 직렬화를 수행하며, 마지막 코드는 콜렉션 유형 불가지론을 수행합니다. f.e.가있는 경우. 당신이리스트 객체를 직렬화하기를 원하지 않지만, 요소들을 최대 절전 모드로 만드는 게으론리스트. –

+0

수정 해 주셔서 감사합니다. 퍼포먼스와 관련하여 눈에 띄는 차이가 있는지 알고 싶습니다. 내 인상은 out.writeObject()가 호출되는 동안 Hazelcast는 예제 2와 대조적으로 사용되어야하는 시리얼 라이저를 초과 작업을 찾습니다. 성능에 눈에 띄는 차이가있을 수 있다고 이야기 할 수 있습니까? 무시할 수있는 차이. 필자의 경우에는 게으른 콜렉션을 사용하지 않는다. 우리는 예제 1 또는 예제 2로 가야 할 것입니다. 고맙습니다. –

+0

컬렉션의 구현 유형을 유지하려면 # 1로 이동하고 그렇지 않으면 # 2로 이동하십시오. 성능은 약간 향상 될 것입니다 (그러나 I/O 잡음에서 손실 될 가능성이 있으며 자신의 데이터 프로파일을 사용하여 테스트를 시도하지 않는 이유는 무엇입니까?). –

답변