2016-09-02 7 views
0

ByteBuffer에 직렬화 된 객체를 써야합니다. 오버 헤드 복사 및 중간 변환없이 가장 빠른 방법은 무엇입니까?직접 버퍼에 객체를 쓰는 가장 빠른 방법은 무엇입니까?

직접 버퍼를 사용할 수있는 openmpi-java를 통해 대형 객체 (2GB 이상)를 전송해야하며 제안 된 아이디어를 기본으로 삼고 싶습니다.

+2

직접 일련 번호를 지정하십시오. 모든 종류의 자동화 된 작업이 느려질 것입니다. –

답변

0

내가하는 일은 ByteBuffer를 래핑하는 OutputStream을 만드는 것입니다. OutputStream을 원하는 직렬화 도구에 전달하십시오. 이 기능을 지원하는 ByteBuffer 대체품이 있지만 쉽게 추가 할 수 있습니다.

BTW 거의 모든 직렬화 라이브러리가 표준 Java 직렬화보다 빠릅니다.

0

개념적으로; JVM 자체 만이 객체를 구성하는 메모리의 바이트에 직접 액세스 할 수 있습니다. 따라서 어떤 종류의 직렬화 도구를 선택하든간에 변환 및 복사의 일정량은 이어야하며이 발생해야합니다.

실제로 개체의 필드를 가져오고 메타 정보에 따라 내용을 바이트로 채우기를 요구하기 때문에. 단순히 복사/변환하지 않으면 작동하지 않습니다.

; 여기에 "올바른"문제가 있는지 궁금합니다. 직렬화 자체가 비용이 많이 드는 작업입니다. 여러 가지 방법이 있습니다. 그리고 그것들은 매우 다른 성질을 가지고 있습니다.

내가 말한 것은 성능에 대해 걱정해야한다는 것입니다. 또는이 방법이나 직렬화 기술을 사용하여 장기적인 결과에 대해 생각하는 데 더 많은 시간을 할애했습니다. 또는 객체의 직렬화와 관련된 보안 위험이 있습니까?

짧은 이야기 : 성능이 인 이유는 무엇입니까?