Domanda

Qualcuno ha informazioni sulle caratteristiche prestazionali dei buffer di protocollo rispetto a BSON (JSON binario) o rispetto a JSON in generale?

  • Dimensione del filo
  • Velocità di serializzazione
  • Velocità di deserializzazione

Sembrano buoni protocolli binari da utilizzare su HTTP.Mi sto solo chiedendo quale sarebbe meglio a lungo termine per un ambiente C#.

Ecco alcune informazioni che stavo leggendo BSON E Buffer di protocollo.

È stato utile?

Soluzione

La parsimonia è anche un'altra alternativa simile ai buffer di protocollo.

Esistono buoni benchmark da parte della comunità Java sulla serializzazione/deserializzazione e sulle dimensioni dei cavi di queste tecnologie: https://github.com/eishay/jvm-serializers/wiki

In generale, JSON ha dimensioni del cavo leggermente più grandi e un DeSer leggermente peggiore, ma vince in termini di ubiquità e capacità di interpretarlo facilmente senza l'IDL di origine.L'ultimo punto è qualcosa che Apache Avro sta cercando di risolvere e batte entrambi in termini di prestazioni.

Microsoft ha rilasciato un pacchetto NuGet C# Microsoft.Hadoop.Avro.

Altri suggerimenti

Questo post confronta velocità di serializzazione e dimensioni in .NET, tra cui JSON, BSON e XML.

alt text

alt text

http: //james.newtonking .com / archive / 2010/01/01 / net-serializzazione-prestazioni-comparison.aspx

Ecco alcuni benchmark recenti che mostra la performance del popolare Serializzatori NET.

Il brucia Monaci benchmark mostrano la prestazioni di serializzazione un semplice POCO mentre il Northwind parametri di riferimento visualizza i risultati combinati di serializzare una riga in ogni tabella di Northwind set di dati di Microsoft.

entrare descrizione dell'immagine qui

Fondamentalmente buffer di protocollo ( protobuf-net) è circa 7x più veloce del più veloce libreria di classi base Serializer a .NET (XML DataContractSerializer). La sua anche più piccolo rispetto alla concorrenza come è anche 2.2x più piccolo di Microsofts più compatto formato di serializzazione (JsonDataContractSerializer).

serializzatori testo di ServiceStack sono i più vicini ad eguagliare la prestazione del binario protobuf-net dove il suo JSON Serializer è solo 2.58x più lento di protobuf-net.

buffer di protocollo è progettato per il filo:

  1. dimensioni molto piccole messaggio - un aspetto è molto efficace rappresentazione intera grandezza variabile
  2. .
  3. decodifica Molto veloce -. Si tratta di un protocollo binario
  4. protobuf genera super efficiente C ++ per la codifica e decodifica dei messaggi - suggerimento: se si codifica tutti i Var-numeri interi o elementi statici di dimensioni in esso sarà codificare e decodificare alla velocità deterministica
  5. .
  6. e offre una ricchissima modello di dati -. Codifica in modo efficiente le strutture di dati molto complessi

JSON è solo testo e ha bisogno di essere analizzato . suggerimento: codifica di un "miliardo" int in ci sarebbe voluto un bel po 'di personaggi: Billion = 12 del char (scala lunga), in binario si inserisce in un uint32_t Ora che cosa di cercare di codificare un doppio? che sarebbe molto molto peggio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top