小编Ric*_*son的帖子

Protobuf vs Flatbuffers vs Cap'n proto 哪个更快?

我决定找出 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)

c++ protocol-buffers flatbuffers capnproto

15
推荐指数
1
解决办法
8247
查看次数

标签 统计

c++ ×1

capnproto ×1

flatbuffers ×1

protocol-buffers ×1