C++ 序列化性能

标签 c++ performance serialization boost protocol-buffers

我正在构建一个分布式 C++ 应用程序,该应用程序需要对在不同进程和计算机之间传递的简单数据结构进行大量序列化和反序列化。

我对序列化复杂的类层次结构不感兴趣,但更多的是发送带有一些简单成员(如数字、字符串和数据 vector )的结构。数据 vector 通常可以是许多兆字节。 我担心基于 text/xml 的方法太慢了,我真的不想自己写这个,因为字符串编码和数字字节序等问题会使它比表面上看起来更复杂。

我一直在研究 Protocol Buffer 和 boost.serialize。根据文档, Protocol Buffer 似乎非常关心性能。 从某种意义上说,Boost 似乎更轻量级,因为您没有用于指定数据格式的外部语言,我觉得这对于这个特定项目非常方便。

所以我的问题归结为:有人知道对于我上面描述的典型用例,boost 序列化是否很快?

此外,如果还有其他可能适合此的库,我很乐意听到它们。

最佳答案

我强烈建议使用 Protocol Buffer 。它们使用起来非常简单,提供出色的性能,并解决了字节顺序和向后兼容性等问题。为了使其更具吸引力,由于多种语言实现,序列化数据与语言无关。

关于C++ 序列化性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/321619/

相关文章:

javascript - jQuery slideToggle() 性能不佳和/或卡住 IE8

php - 索引错误并且所有查询都很慢

mysql - 在MySQL看来,是用union开始更快还是用union结束更快呢?

c++ - 递归数据结构的前向声明

php - 创建过于简单的功能是不是不好的风格?

c++ - 无法解析函数 'stof'

c# - 尝试在 WCF 中序列化时出现 System.StackOverflowException

c++ - Boost Property_Tree 迭代器,如何处理它们?

c# - C# 中的设计时间序列化

java - 如何一般地指定可序列化列表