문제

나는 다른 프로세스와 컴퓨터 사이에 전달되는 간단한 데이터 구조의 많은 직렬화 및 사화를 수행 해야하는 분산 C ++ 애플리케이션을 구축하고 있습니다.

복잡한 클래스 계층 구조를 직렬화하는 데 관심이 없지만 숫자, 문자열 및 데이터 벡터와 같은 몇 가지 간단한 구성원이있는 구조를 더 많이 전송합니다. 데이터 벡터는 종종 많은 메가 바이트가 클 수 있습니다. 문자열 인코딩 및 숫자 endianess와 같은 문제가 표면에서 보는 것보다 더 복잡하게 만들 수 있기 때문에 텍스트/XML 기반 방식의 방법이 너무 느리고 직접 작성하고 싶지 않습니다.

나는 프로토콜 버퍼를 조금 찾고 있었고 부스트 .serialize. 문서에 따르면 프로토콜 버퍼는 성능에 크게 신경 쓰는 것 같습니다. 부스트는이 특정 프로젝트에 매우 편리한 데이터 형식을 지정하기위한 외부 언어가 없다는 점에서 다소 가벼운 것 같습니다.

그래서 내 질문은 다음과 같습니다. 위에서 설명한 전형적인 사용 사례에 대한 부스트 직렬화가 빠르다는 것을 아는 사람이 있습니까?

또한 이에 맞는 다른 라이브러리가 있다면, 그에 대해 기꺼이들을 것입니다.

도움이 되었습니까?

해결책

프로토콜 버퍼를 강력하게 제안합니다. 그들은 사용하기가 매우 간단하고, 성능이 뛰어나며, 엔디 언과 거꾸로 호환성과 같은 문제를 처리합니다. 더 매력적으로 만들기 위해 직렬화 된 데이터는 수많은 언어 구현 덕분에 언어 독립적입니다.

다른 팁

에이스와 에이스 타오가 떠오르지 만 크기와 범위가 마음에 들지 않을 수도 있습니다.http://www.cs.wustl.edu/~schmidt/ace.html

"빠른"및 부스트에 대한 쿼리와 관련하여. 그것은 주관적인 용어이며 귀하의 요구 사항 (처리량 등)을 모르면 대답하기가 어렵습니다. 부스트 물건에 대한 벤치 마크가 있다는 것은 아닙니다 ...

사용할 수있는 메시징 레이어가 있지만 아마도 부스트보다 느리게 진행됩니다. 나는 당신이 부스트에서 좋은 솔루션을 식별했다고 말하지만, ACE 및 기타 독점 통신/메시징 제품 만 사용했습니다.

나의 추측 부스트가 충분히 빠르다는 것입니다. 이전 프로젝트에서 디스크를 오가는 데 데이터를 직렬화하기 위해이를 사용했으며 그 성능은 결코 문제가되지 않았습니다.

나의 대답 다음은 일반적으로 직렬화에 대해 이야기하며, 이는 사용하는 직렬화 라이브러리를 넘어 도움이 될 수 있습니다.

그러나 말하면, 그것은 당신이 직렬화 (Endianess String 인코딩)를 사용하여 대부분의 주요 문제점을 알고있는 것처럼 보입니다. 당신은 버전화와 앞으로/거꾸로 호환성을 제거했습니다. 시간이 중요하지 않은 경우 직렬화 코드를 작성하는 것이 좋습니다. 그것은 깨달은 경험이며, 당신이 배우는 교훈은 매우 귀중합니다. 나는 당신에게 경고 할 것이지만, 그것은 당신이 그들의 부풀음에 대한 XML 기반 프로토콜을 미워하게 만드는 경향이 있습니다. :)

프로젝트와 함께 행운을 선택하는 길은 어떤 길을 선택하든.

또한 체크 아웃하십시오 ONC-RPC (Old Sun-RPC)

Boost.serialization은 문자열 인코딩 또는 엔디 언에 신경 쓰지 않습니다. 그것이 당신에게 중요하다면 그것을 사용하지 않을 것입니다.

Zeroc의 얼음을보고 싶을 수도 있습니다. http://www.zeroc.com/

회사가 완전히 지정되고 정의된다는 점을 제외하고는 Corba와 유사하게 작동합니다. 거꾸로 구현은 의도 한대로 작동한다는 것입니다. 단점은 지원하지 않는 언어를 사용하는 경우 운이 좋지 않다는 것입니다.

잘 정의 된 정의 된 데이터 구조 만 보내는 경우 아마도보고 있어야합니다. ASN.1 인코딩 방법론으로?

또한 있습니다 절약, 알파 프로젝트처럼 보이지만 Facebook에서 사용 및 개발되었으므로 몇 명의 사용자가 있습니다.

또는 좋은 늙었습니다 DCE, 표준 MS는 Com에 사용하기로 결정했습니다. 지금은 오픈 소스, 20 년이 너무 늦었지만 결코 더 낫습니다.

선제 적으로 최적화하지 마십시오. 먼저 측정하고 두 번째를 최적화하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top