2011-11-08 24 views
15

Attualmente sto studiando modi per migliorare il nostro attuale meccanismo di serializzazione della rete C++ che mantiene il nostro protocollo binario esistente. Il primo approccio è stato quello di codificarlo usando Boost.Asio con Boost.Serialisation usando la serializzazione binaria. In ogni caso è emerso che è un po 'più lento (10%) che la nostra attuale implementazione fatta a mano. Qualcuno ha una reale esperienza _real_work_ sull'uso di google protobuf insieme a Boost.Asio?Boost.Asio con i buffer del protocollo google

ho cercato di Google per i campioni, ma era solo in grado di venire-up con questo esempio:

Boost Asio with google protocol buffers sample

Fa qualcuno ha fatto questo in qualsiasi progetto reale? I dati delle prestazioni sono molto interessanti in quanto devono essere abbastanza veloci ...

+0

Puoi allegare l'immagine che mostra la figura? –

+0

Spiacente, non posso rivelarlo :( – jvaz

risposta

22

Utilizziamo boost :: asio e Protobuf per protocolli complessi a bassa velocità di messaggio. Per protocolli a velocità di messaggio elevati e semplici, potenziamo :: asio e serializzazione personalizzata.

La libreria C++ Protobuf utilizza std :: string per rappresentare i campi stringa per i messaggi che deserializza, il che significa che Protobuf esegue un'allocazione di spazio libero per ogni campo stringa in ogni messaggio ricevuto. Ciò rende Protobuf non molto performante per i messaggi ad alta frequenza.

Userei Protobuf ovunque se potessi, comunque. È uno strumento meraviglioso per realizzare protocolli ricchi, complessi, indipendenti dalla piattaforma, forward-and-back-compatible.

ADDENDUM

in quanto sembra che persone stanno leggendo questa risposta, avrei dovuto condividere che ho imparato che in C++ Protobuf è possibile riutilizzare oggetti messaggio di deserializzazione per ridurre la frequenza malloc durante la lettura .

Vedere Suggerimenti per l'ottimizzazione:

https://developers.google.com/protocol-buffers/docs/cpptutorial

+0

Grazie James per il tuo contributo, molto apprezzato :) – jvaz

Problemi correlati