[英]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。
如果有人可以幫助我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.