簡體   English   中英

C / C ++快速序列化:Boost,Cpickle,Json,Protocol緩沖區

[英]C/C++ Serialize Fast : Boost vs Cpickle vs Json vs Protocol buffer

我需要非常快速地將C / C ++結構序列化為二進制字符串。

Env = Windows,Boost 1.44,Python 2.4。

我們有3種結構差異可序列化:Basic:int,double,long,float,string(或char *)Vector:-每個元素可以是:Basic或Vector或Map-> vector <Basic <Vector,Vector,Map>
Map:-每個Value元素可以是:Basic或Vector或Map-> map Basic或List或Map>

我嘗試使用cPickle序列化CPython定義的結構,如上所述。 序列化的時間:1.5秒,我嘗試使用帶有不同類的boost 1.44進行相同的操作:-使用多態(指針)和虛函數-> 35 s-使用boost :: variant-> 7s

我無法解釋Boost en Cpickle之間的差異如何太大。 我注意到,將向量和向量序列化的boost的序列化時間是10倍。(TimeSerialize(向量)= 10 * TimeSerialize(vector)因此,我的想法是使用boost :: variant避免指針,但是速度很慢。

我沒有嘗試協議Buffer和JsonCpp。 我嘗試全部用C ++開發,而不使用Python。 但是目前,Python的序列化速度比C ++快5。

如果有人可以幫助我。

Boost的設計目標不包括做到最快。 我想protobuf會更快,但更難使用。 我只是為自己的項目做序列化代碼。 我做了類似於MFC中實現的操作。 它相當快,沒有很多開銷。 如果您真的需要速度,可以像這樣滾動自己。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM