MessagePackプロトコル再考

blog.fenrir-inc.com

C++ の実装の話ですが、構造体に直接シリアライズ・デシリアライズでき、無駄なコピーが起こらないように、テンプレートを駆使して実装されており、JSON とは比べものにならない速さ

// データ構造
struct mystruct {
    std::string m_str;
    std::vector<int> m_vec;
 
    MSGPACK_DEFINE(m_str, m_vec);
};
  
int main(void) {
    mystruct original_data;
    mystruct clone_data;
 
    // シリアライズ
    msgpack::sbuffer sbuf;
    msgpack::pack(sbuf, original_data);
 
    // デシリアライズ
    msgpack::unpacked msg;
    msgpack::unpack(&msg, sbuf.data(), sbuf.size());
    msgpack::object obj = msg.get();
    obj.convert(&clone_data);
}

MessagePackが文字列とバイナリをわけないのは問題? · GitHub