我决定找出 Protobuf、Flatbuffers 和 Cap'n proto 中的哪一个是我的应用程序最好/最快的序列化。在我的情况下,通过网络发送某种字节/字符数组(我序列化为该格式的原因)。所以我对所有三个都做了简单的实现,其中我对一个字符串、一个浮点数和一个整数进行了序列化和反序列化。这给出了意想不到的结果:Protobuf 是最快的。我会称它们为意外,因为 cap'n proto 和 flatbuffes 都“声称”是更快的选择。在我接受这一点之前,我想看看我是否无意中在我的代码中作弊。如果我没有作弊,我想知道为什么 protobuf 更快(究竟为什么可能是不可能的)。对于 cap'n proto 和 faltbuffers 来说,这些消息是否可以简单到真正让它们大放异彩?
我的时间:
flatbuffers 所用
时间:14162 微秒 capnp 所用
时间:60259 微秒protobuf 所用时间:12131 微秒
(显然这些取决于我的机器,但重要的是相对时间)
平面缓冲区代码:
int main (int argc, char *argv[]){
std::string s = "string";
float f = 3.14;
int i = 1337;
std::string s_r;
float f_r;
int i_r;
flatbuffers::FlatBufferBuilder message_sender;
int steps = 10000;
auto start = high_resolution_clock::now();
for (int j = 0; j < steps; j++){
auto autostring = …Run Code Online (Sandbox Code Playgroud)