programing

프로토콜 버퍼와 JSON 또는 BSON 비교

megabox 2023. 2. 15. 21:50
반응형

프로토콜 버퍼와 JSON 또는 BSON 비교

Protocol Buffers 대 BSON(Binary JSON) 또는 JSON에 대한 일반적인 성능 특성에 대해 알고 있는 사람이 있습니까?

  • 와이어 사이즈
  • 시리얼화 속도
  • 역직렬화 속도

HTTP를 통해 사용하기에 좋은 바이너리 프로토콜인 것 같습니다.장기적으로는 C# 환경에서 어떤 것이 더 좋을지 궁금할 뿐입니다.

여기 BSON과 Protocol Buffers에 대한 정보가 있습니다.

투고에서는 의 시리얼라이제이션 속도와 크기를 비교합니다.NET(JSON, BSON 및 XML 포함)

alt 텍스트

alt 텍스트

http://james.newtonking.com/archive/2010/01/01/net-serialization-performance-comparison.aspx

또한 절약은 프로토콜 버퍼와 같은 또 다른 대안입니다.

이러한 테크놀로지의 시리얼화/디시리얼화 및 회선 사이즈에 관한 Java 커뮤니티의 벤치마크는 다음과 같습니다.https://github.com/eishay/jvm-serializers/wiki

일반적으로 JSON은 와이어 크기가 약간 크고 DeSer가 약간 더 나쁘지만, 유비쿼티성이 우수하며 소스 IDL 없이도 쉽게 해석할 수 있습니다.마지막 포인트는 Apache Avro가 해결하려는 것입니다. 성능 면에서 두 가지를 모두 능가합니다.

Microsoft는 C# NuGet 패키지 Microsoft를 출시했습니다.Hadoop.Avro.

다음은 인기 있는 의 성능을 보여주는 최근 벤치마크입니다.NET 시리얼라이저

Burning Monkes 벤치마크는 단순한 POC를 직렬화하는 성능을 나타내며, 포괄적인 Northwind 벤치마크는 Microsoft의 Northwind 데이터 집합의 모든 테이블에서 행을 직렬화하는 결과를 보여 줍니다.

여기에 이미지 설명 입력

기본적으로 프로토콜 버퍼(protobuf-net)는 에서 가장 빠른 기본 클래스 라이브러리 Serializer보다 약 7배 빠릅니다.NET(XML Data Contract Serializer).또한 마이크로소프트의 가장 콤팩트한 시리얼라이제이션 포맷(Json Data Contract Serializer)보다 2.2배 작기 때문에 경쟁 제품보다 작습니다.

ServiceStack의 텍스트시리얼라이저는 Json시리얼라이저가 protobuf-net보다 2.58배 느린 바이너리 protobuf-net의 퍼포먼스에 가장 가깝습니다.

프로토콜 버퍼는 와이어용으로 설계되었습니다.

  1. 매우 작은 메시지 크기 - 한 가지 측면은 매우 효율적인 가변 크기 정수 표현입니다.
  2. 매우 빠른 디코딩 - 이진 프로토콜입니다.
  3. protobuf는 메시지를 인코딩 및 디코딩하기 위해 매우 효율적인 C++를 생성합니다.힌트: 모든 변수 정수 또는 정적 크기의 항목을 인코딩하면 결정론적 속도로 인코딩 및 디코딩됩니다.
  4. 매우 풍부한 데이터 모델을 제공하여 매우 복잡한 데이터 구조를 효율적으로 인코딩합니다.

JSON은 텍스트일 뿐이므로 해석할 필요가 있습니다.힌트: "억" int를 인코딩하려면 꽤 많은 문자가 필요합니다: 10억 = 12자(긴 스케일), 2진수로는 uint32_t. 이제 이중 부호화를 시도하는 것은 FAR FAR보다 더 나빠질 것입니다.

언급URL : https://stackoverflow.com/questions/2000933/protocol-buffers-versus-json-or-bson

반응형