2017-11-22 22 views
0

플랫 버퍼로 데이터를 나타 냈습니다. 현재 평면 버퍼에있는 많은 객체 컬렉션을 작은 조각으로 나눌 문제가있었습니다.딥 복사 플랫 버퍼 오브젝트

단순한 방법은 각 조각에 대해 flatbuffer 빌더를 작성한 다음 해당 빌더에 오브젝트를 작성하는 것입니다. 그러나 객체가 약간 복잡 할 경우 구조체로 데이터 구조체를 복사하는 것은 지루한 작업입니다.

flatbuffer는 상대 오프셋을 저장하기 때문에 이론적으로 다른 flatbuffer 인스턴스로 객체를 복사하기 위해 단순히 바이트 버퍼를 복사하는 것이 가능하다고 생각합니다. 이미 사용할 수 있도록 복사 할 항목이 있습니까? 나는 지금 자바를 사용하고있다. 감사합니다

감사

답변

0

이 테이블 때문에, 당신이 생각하는 것보다 더 복잡하고 아이들이 메모리에 neccessarily 연속하지 않고, 다른 테이블과 vtable을 공유 할 수 있습니다, 등

가장 쉬운 방법이다 중첩 된 FlatBuffers (바이트 벡터로 자식 객체 스틱)를 사용합니다. 그 이유는 간단히 복사 할 수 있기 때문입니다.

C++의 리플렉션을 사용하는 딥 복사 기능이 있지만 속도가 느리고 바이너리 스키마 파일이 필요하며 아직 Java로 포팅되지 않았습니다. 새로운 "미니 리플렉션"테이블은 딥 카피에 적합 할뿐만 아니라 지금까지는 C++에 불과합니다.