gpt4 book ai didi

c++ - C/C++ 快速序列化 : Boost vs Cpickle vs Json vs Protocol buffer

转载 作者:太空宇宙 更新时间:2023-11-04 04:07:31 25 4
gpt4 key购买 nike

我需要以二进制字符串序列化 C/C++ 结构,速度非常快。

环境 = Windows,Boost 1.44,Python 2.4。

我们有 3 种不同的结构要序列化:基本类型:int、double、long、float、string(或 char*) vector : - 每个元素可以是:Basic 或 Vector 或 Map --> vector <基本、 vector 、 map >
map : - 每个 Value 元素可以是:Basic 或 Vector 或 Map --> map Basic 或 List 或 Map >

我尝试使用 cPickle 序列化 CPython 定义的结构,如上。序列化时间:1.5 秒我用不同类别的 boost 1.44 尝试同样的事情: - 多态(指针)和虚函数 -> 35 秒 - 使用 boost::variant --> 7s

我无法解释 Boost 和 Cpickle 之间的差异有多大。我注意到,序列化 vector 和 vector 的提升的序列化时间是因子 10。( TimeSerialize (vector) = 10 * TimeSerialize(vector)所以我的想法是使用 boost::variant 来避免指针。但是很慢。

我没有尝试 Protocol Buffer 和 JsonCpp。我尝试全部用 C++ 开发而不使用 Python。但目前 Python 的序列化速度比 C++ 快 5。

如果有人可以帮助我。

最佳答案

Boost 的设计目标不包括成为最快的。我猜想 protobuf 会更快,但更难使用。我只是为自己的项目做了序列化代码。我做了类似于 MFC 中实现的事情.它相当快,没有很多开销。如果你真的需要速度,你自己喜欢 this .

关于c++ - C/C++ 快速序列化 : Boost vs Cpickle vs Json vs Protocol buffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4014850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com