私は現在、Protocol Buffersが主に複雑なオブジェクトをキー値データベースに格納する方法として広く使用されているプロジェクトに取り組んでいます。プロトコルバッファとフラットバッファ
Flat Buffersに移行すると、パフォーマンス面で大きなメリットがありますか?
さらに一般的にフラットバッファの代わりにプロトコルバッファを使用する理由はありますか?
私は現在、Protocol Buffersが主に複雑なオブジェクトをキー値データベースに格納する方法として広く使用されているプロジェクトに取り組んでいます。プロトコルバッファとフラットバッファ
Flat Buffersに移行すると、パフォーマンス面で大きなメリットがありますか?
さらに一般的にフラットバッファの代わりにプロトコルバッファを使用する理由はありますか?
プロトコルバッファは、ワイヤ上のスペースを消費するために最適化されているため、アーカイブとストレージでは非常に効率的です。しかし、複雑なエンコーディングは解析するのに費用がかかり、計算コストが高く、C++ APIは動的な割り当てを大量に使用します。一方、フラットバッファは、効率的な解析およびメモリ内表現(場合によっては、データのゼロコピービューを提供するなど)のために最適化される。
あなたのユースケースによって、それらの側面のどれがあなたにとってより重要かは異なります。 flatbufferページから引用
:
なぜプロトコルバッファを使用しない、または..?
プロトコルバッファを使用すると、 データにアクセスする前に、多くの場合、オブジェクトごとのメモリと相まって、構文解析/二次表現へ 開梱ステップを必要としないことFlatBuffersである 主な違いは、実際にFlatBuffersに比較的似ています割り当て。コードは オーダーの大きさもあります。プロトコルバッファには、オプションの テキストインポート/エクスポートや、ユニオンのようなスキーマ言語機能はありません。