在C++;? 在C++中通过套接字发送序列化的原BoFF数据,哪种序列化最有意义?我使用升压插座

在C++;? 在C++中通过套接字发送序列化的原BoFF数据,哪种序列化最有意义?我使用升压插座,c++,sockets,serialization,protocol-buffers,C++,Sockets,Serialization,Protocol Buffers,到目前为止,我通过套接字发送std::strings。我可以选择将protobuf对象序列化为字符串,并通过套接字发送该字符串 与protobuf提供的其他序列化类型相比,这是慢还是慢?否。所有序列化方法都使用相同的算法生成相同的输出。您唯一能节省的就是通过存储数据和可能使用的内存量来节省时间。对于所有大小合理的协议缓冲区,这是可以忽略的 一般来说,你应该选择使你的代码最可读的序列化方法。< /P> @ Marc Gravell发送一个字符串,OrthBuf对象被序列化到一个通过Socket发送

到目前为止,我通过套接字发送std::strings。我可以选择将protobuf对象序列化为字符串,并通过套接字发送该字符串


与protobuf提供的其他序列化类型相比,这是慢还是慢?

否。所有序列化方法都使用相同的算法生成相同的输出。您唯一能节省的就是通过存储数据和可能使用的内存量来节省时间。对于所有大小合理的协议缓冲区,这是可以忽略的


一般来说,你应该选择使你的代码最可读的序列化方法。< /P> @ Marc Gravell发送一个字符串,OrthBuf对象被序列化到一个通过Socket发送的字符串。我不能直接说出C++版本(我是C重点)。但我的期望是,直接发送到基于流的方法应该更有效。如果没有C++熟悉的东西,你可能需要配置文件。@ SuffKi-Cooo我认为在发送字符串和发送字节编码流之间存在性能差异。我的信息不会太大,但我想当弦变成拥抱的时候就不贵了?!SerializeToString()实际上只返回一个string对象,该对象包含与ToArray或任何其他序列化方法相同的字节。唯一的区别是字节存储的数据结构。(试试cout@platzhirsh,您担心对每个字节进行单独的

write(2)
调用会很慢。使用protobuf的
SerializeToString()
那么写出来应该足够快。
serializePartToZeroCopyStream()
如果您担心性能,这将是一个更好的选择,尽管这两个选项都不慢。