2012-03-26 4 views
8

나는 많은 양의 시뮬레이션 데이터와 함께 작동하는 컴퓨터 과학자이며 종종 디스크에 데이터를 저장 /로드하는 자신을 발견합니다. 벡터와 같은 단순한 작업의 경우, 일반적으로 숫자를 파일에 버리는 것만 큼 간단합니다.C++ Boost.serialization 대 ​​간단한로드/저장

더 복잡한 물건, 생명체 등을 저장 /로드 할 수있는 기능이 있습니다. 자, 저는 컴퓨터 과학자이 아니므로 여기서 용어를 볼 수 있습니다. 그래서 나는 단지 이해하지 못합니다 (그러나 나는 사랑합니다). 내가 최근에 접했던 것들 중 하나는 연재Boost.Serialization 라이브러리입니다.

필자가 생각하기에 직렬화는 개체를 네트워크에서 저장 /로드하거나 네트워크를 통해 전송할 수있는 개체로 변환하는 프로세스입니다. 고려해야 할 대부분의/개체를 디스크에서 저장 /로드 할 필요가 있다고 생각하면 간단한로드/저장 함수를 Boost.Serialization으로 전환해야하는 이유가 무엇입니까? Boost.Serialization은 내가 이미하고있는 것 외에 무엇을 줄까요?

답변

10

이 라이브러리는 순전히 '응용 적'관점에서 볼 때 매우 명확하지 않은 많은 세부 사항을 고려합니다.

예를 들어, 데이터 이식성 WRT big/little 숫자 endianess, 지적 데이터 수명, 구조화 된 컨테이너, 버전 관리, 비 관입 확장 및 more입니다. 또한 다른 std 또는 부스트 인프라와의 상호 작용을 올바르게 처리하고 코드 유지 관리를 쉽게 수행 할 수있는 코드 구조를 지정합니다. 많은 (모든 표준 & 부스트?) 컨테이너에 대해 시리얼 라이저를 사용할 준비가되어 있습니다.

다른 사용자와 데이터를 공유해야하는 경우 발행 된 스키마, 참조 된 스키마 및 디버깅 된 스키마를 참조하면 훨씬 쉽게 작업 할 수 있습니다.

+0

또한 공유 및 앨리어스 포인터, 모든 직렬화 복잡성의 단점 – sehe

+0

@sehe : 예, 지적한 데이터 수명 시간 * – CapelliC

+1

으로 내가 의도 한 것을보다 명확하게 표현할 수 있습니다. "구조화 된 컨테이너"와 "공유 된 컨테이너" 포인터 "는 궁극적으로 그래프 일 뿐이지 만 계산 과학에서는 확실하게 다른 그래프를 볼 수 있습니다. 특히 그래프 직렬화에서는 잘 설계된 라이브러리를 갖는 데 도움이됩니다. – MSalters