Breve introduzione
Questo blog confronta principalmente le prestazioni di serializzazione e deserializzazione di XML, Json, Hessian e Protocol Buffer, escludendo i concetti base di XML e Json. Hessian: Hessian è uno strumento remoting onhttp leggero che fornisce funzionalità RMI utilizzando il protocollo binario RPC e capacità di serializzazione integrate. Protocol Buffers: Un formato per lo scambio dati di Google, indipendente dal linguaggio e, poiché è un formato binario, è molto più veloce rispetto all'uso di XML per lo scambio dati, e può essere utilizzato per la comunicazione di dati tra applicazioni distribuite o per lo scambio di dati in ambienti eterogenei. Come formato di trasmissione dati binario efficiente e compatibile, può essere utilizzato in molti campi come la trasmissione di rete, file di configurazione, archiviazione dati, ecc. Google fornisce implementazioni in Java, C++, Python, e ora su Internet esistono implementazioni di linguaggi come C#.
Serializzazione e deserializzazione
XML: Usa l'XmlSerializer fornito con .Net. Json: Usa ServiceStack.Text, che è più performante di Newtonsoft.Json, ma il più veloce dovrebbe essere fastJSON.net. Hessian: Uso la libreria HessianCSharp, scaricata da nuget. Buffer di protocollo: Usando protobuf-net, scaricato da nuget. Di seguito sono riportate le entità utilizzate nel test.
Il processore i7HQ a 2,6 Hz utilizzato nella macchina di test. Ecco i risultati del test Serializzazione
Deserializzazione
Lunghezza del byte dopo la serializzazione
Parliamo prima della serializzazione, qui viene testata rispettivamente 100 volte, 1000 volte, 10000 volte e 100000 volte, l'ordinata è il tempo di completamento, l'unità è millisecondi, si può vedere che testando entro 10000 volte, il consumo di tempo di 4 tipi di serializzazione è molto piccolo, tutto entro 200 millisecondi, dopo 10000 volte, fino a 100000 volte, tutte iniziano a crescere, la peggiore è Xml, la migliore sono i Protocol Buffer, ma quando è entro 10000 volte, L'assia è migliore dei Protocol Buffers. Non c'è molta differenza all'interno di 10.000 deserializzazioni, ma a 10.000 volte possiamo già vedere che Hessian richiede più tempo, e a 100.000 volte Hessian supera direttamente Xml, il che mi fa sempre pensare che ci sia un problema con il mio codice, e che la migliore performance sia ancora Protocol Buffer. La lunghezza dei byte serializzati è comprensibilmente la più lunga in Xml, perché il file contiene molti tag finali (),</Name> e Protocol Buffers è ancora il migliore.
In base al grafico sopra, possiamo quasi rapidamente concludere che Protocol Buffers è il migliore, ma penso che dobbiamo comunque valutarlo in modo completo dai seguenti aspetti: 1. Leggibilità: XML e Json sono entrambi testo dopo la serializzazione, e la leggibilità è molto buona; ad esempio, se c'è un errore nel mezzo, possiamo facilmente visualizzare i dati scambiati e persino simulare i dati per testare; Sia il buffer Hessian che quello Protocol Buffer sono binari, e il contenuto è illeggibile dopo la serializzazione, il che avrà un certo impatto sulla risoluzione dei problemi del sistema. 2. Versatilità: XML e JSON sono già vecchi formati di scambio dati, e questi sono i due formati per lo scambio di dati tra sistemi generali. Sia i buffer a Assia che quelli a Protocollo sono relativamente impopolari e vengono usati meno. 3. Comodità: Hessian è in realtà un framework RPC completo, definisci l'interfaccia lato server e implementa l'interfaccia, copia l'interfaccia al client. Dopo una piccola quantità di programmazione, possiamo chiamare il lato server come chiamando un metodo locale, che non è disponibile negli altri tre strumenti, e le prestazioni non sono male.
|