프로토콜 버퍼와 JSON 또는 BSON 비교
Protocol Buffers 대 BSON(Binary JSON) 또는 JSON에 대한 일반적인 성능 특성에 대해 알고 있는 사람이 있습니까?
- 와이어 사이즈
- 시리얼화 속도
- 역직렬화 속도
HTTP를 통해 사용하기에 좋은 바이너리 프로토콜인 것 같습니다.장기적으로는 C# 환경에서 어떤 것이 더 좋을지 궁금할 뿐입니다.
여기 BSON과 Protocol Buffers에 대한 정보가 있습니다.
이 투고에서는 의 시리얼라이제이션 속도와 크기를 비교합니다.NET(JSON, BSON 및 XML 포함)
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의 퍼포먼스에 가장 가깝습니다.
프로토콜 버퍼는 와이어용으로 설계되었습니다.
- 매우 작은 메시지 크기 - 한 가지 측면은 매우 효율적인 가변 크기 정수 표현입니다.
- 매우 빠른 디코딩 - 이진 프로토콜입니다.
- protobuf는 메시지를 인코딩 및 디코딩하기 위해 매우 효율적인 C++를 생성합니다.힌트: 모든 변수 정수 또는 정적 크기의 항목을 인코딩하면 결정론적 속도로 인코딩 및 디코딩됩니다.
- 매우 풍부한 데이터 모델을 제공하여 매우 복잡한 데이터 구조를 효율적으로 인코딩합니다.
JSON은 텍스트일 뿐이므로 해석할 필요가 있습니다.힌트: "억" int를 인코딩하려면 꽤 많은 문자가 필요합니다: 10억 = 12자(긴 스케일), 2진수로는 uint32_t. 이제 이중 부호화를 시도하는 것은 FAR FAR보다 더 나빠질 것입니다.
언급URL : https://stackoverflow.com/questions/2000933/protocol-buffers-versus-json-or-bson
'programing' 카테고리의 다른 글
갑자기 Springfox Swagger 3.0이 spring webflux에서 작동하지 않음 (0) | 2023.02.23 |
---|---|
개체 키에 정확히 각도 필터 (0) | 2023.02.18 |
심판에게 소품을 건네는 적절한 방법은 무엇입니까? (0) | 2023.02.15 |
Swagger UI를 스프링 부팅과 함께 사용할 수 없습니다. (0) | 2023.02.15 |
Express 핸들바와 각도 JS 사용 (0) | 2023.02.15 |