문제

누구든지 프로토콜 버퍼의 성능 특성 대 BSON (Binary JSON) 또는 일반적으로 JSON에 대한 정보가 있습니까?

  • 와이어 크기
  • 직렬화 속도
  • 사제화 속도

이들은 HTTP를 통해 사용하기에 좋은 이진 프로토콜처럼 보입니다. 나는 C# 환경에서 장기적으로 어느 쪽이 더 좋을지 궁금합니다.

여기에 내가 읽은 정보가 있습니다 BSON 그리고 프로토콜 버퍼.

도움이 되었습니까?

해결책

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

Java 커뮤니티의 직렬화/사막화 및 이러한 기술의 와이어 크기에 대한 좋은 벤치 마크가 있습니다. https://github.com/eishay/jvm-serializers/wiki

일반적으로 JSON은 약간 크게 와이어 크기가 크고 약간 더 나쁜 Deser를 가지지 만 유비쿼터스에서 승리하고 소스 IDL없이 쉽게 해석 할 수 있습니다. 마지막 요점은 그게 뭔가입니다 Apache Avro 해결하려고 노력하고 있으며 성능 측면에서 모두 능가합니다.

Microsoft는 C# Nuget 패키지를 출시했습니다 Microsoft.hadoop.avro.

다른 팁

이 게시물 JSON, BSON 및 XML을 포함하여 .NET의 직렬화 속도와 크기를 비교합니다.

alt text

alt text

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

여기에 있습니다 최근의 벤치 마크 인기있는 .NET 시리얼 라이저의 성능을 보여줍니다.

그만큼 불타는 승려 벤치 마크 포괄적 인 동안 간단한 poco를 직렬화하는 성능을 보여줍니다. Northwind 벤치 마크 Microsoft의 Northwind 데이터 세트의 모든 테이블에서 행을 연속화 한 결과를 보여주십시오.

enter image description here

기본적으로 프로토콜 버퍼 (protobuf-net) 주위에 있습니다 7x .NET (XML DataContractSerializer)에서 가장 빠른 기본 클래스 라이브러리 시리얼 라이저보다 빠릅니다. 또한 경쟁보다 작습니다. 2.2 배 마이크로 소프트보다 작습니다.

Servicestack의 텍스트 시리얼 라이저 JSON 시리얼 라이저 오직 2.58x Protobuf-net보다 느립니다.

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

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

JSON은 단지 텍스트 일뿐입니다 구문 분석. 힌트 : "10 억"int를 인코딩하는 데는 많은 문자가 필요합니다. Billion = 12 char (긴 스케일), 이진에서 UINT32_T에 맞는 이진에 맞습니다. 이제 두 배를 인코딩하려고하는 것은 어떻습니까? 그것은 훨씬 더 나빠질 것입니다.

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