我需要非常快速地在二进制字符串中序列化C / C ++结构。
Env = Windows,Boost 1.44,Python 2.4。
我们有3个不同的结构序列化:
基本:int,double,long,float,string(或char *)
向量:
- 每个元素可以是:Basic或Vector或Map
- >矢量<基本,矢量,地图>
地图:
- 每个Value元素可以是:Basic或Vector或Map
- >地图基本或列表或地图>
我尝试使用cPickle来序列化CPython如上定义的结构。 序列化的时间:1,5秒 我尝试使用不同类的boost 1.44尝试相同的事情: - 使用多态(指针)和虚函数 - > 35秒 - 使用boost :: variant - > 7S
我无法解释Boost en Cpickle之间的差异是如何过大的。 我注意到,序列化向量和向量的序列化时间是因子10.(TimeSerialize(vector)= 10 * TimeSerialize(vector) 所以我的想法是使用boost :: variant来避免指针。但是很慢。
我没有尝试protocole Buffer和JsonCpp。 我尝试使用C ++开发所有内容而不使用Python。 但目前Python比串行化的速度快了5倍。
如果有人可以帮助我。