Quelqu'un a-t-il des informations sur les caractéristiques de performance des tampons de protocole par rapport à BSON (JSON binaire) ou par rapport à JSON en général?
- Taille de fil
- Vitesse de sérialisation
- Vitesse de désérialisation
Ceux-ci semblent être de bons protocoles binaires à utiliser sur HTTP. Je me demande simplement ce qui serait mieux à long terme pour un environnement C #.
Voici quelques informations que je lisais sur BSON et Protocol Buffers .
c#
json
comparison
protocol-buffers
bson
Jeff Meatball Yang
la source
la source
Réponses:
Thrift est également une autre alternative de type Protocol Buffers.
Il existe de bons points de repère de la communauté Java sur la sérialisation / désérialisation et la taille des fils de ces technologies: https://github.com/eishay/jvm-serializers/wiki
En général, JSON a une taille de fil légèrement plus grande et un DeSer légèrement pire, mais gagne en ubiquité et en la capacité de l'interpréter facilement sans l'IDL source. Le dernier point est quelque chose qu'Apache Avro tente de résoudre, et il bat les deux en termes de performances.
Microsoft a publié un package C # NuGet Microsoft.Hadoop.Avro .
la source
Cet article compare les vitesses et les tailles de sérialisation dans .NET, y compris JSON, BSON et XML.
http://james.newtonking.com/archive/2010/01/01/net-serialization-performance-comparison.aspx
la source
Voici quelques repères récents montrant les performances des sérialiseurs .NET populaires.
Les benchmarks Burning Monks montrent les performances de sérialisation d'un POCO simple tandis que les benchmarks complets Northwind montrent les résultats combinés de la sérialisation d'une ligne dans chaque table de l'ensemble de données Northwind de Microsoft.
Fondamentalement, les tampons de protocole ( protobuf-net ) sont environ 7 fois plus rapides que le sérialiseur de bibliothèque de classes de base le plus rapide dans .NET (XML DataContractSerializer). Il est également plus petit que la concurrence car il est également 2,2 fois plus petit que le format de sérialisation le plus compact de Microsofts (JsonDataContractSerializer).
Les sérialiseurs de texte de ServiceStack sont les plus proches de correspondre aux performances du binaire protobuf-net où son Json Serializer est seulement 2,58x plus lent que protobuf-net.
la source
les tampons de protocole sont conçus pour le fil:
JSON est juste du texte et il doit être analysé . astuce: encoder un "milliard" entier dedans prendrait pas mal de caractères: Billion = 12 char's (longue échelle), en binaire il tient dans un uint32_t Maintenant qu'en est-il d'essayer d'encoder un double? ce serait bien pire.
la source
the wire
signifie juste un réseau. Maintenant, lorsque nous utilisons autant de réseaux sans fil, cela peut sembler étrange.