因此,我目前正在開發一個項目,其中Protocol Buffers被廣泛使用,主要用於將複雜對象存儲在鍵值數據庫中。協議緩衝區vs平坦緩衝區
遷移到Flat Buffers會在性能方面提供相當大的好處嗎?
更一般地說,有沒有一個很好的理由使用Protocol Buffers而不是Flat Buffers?
因此,我目前正在開發一個項目,其中Protocol Buffers被廣泛使用,主要用於將複雜對象存儲在鍵值數據庫中。協議緩衝區vs平坦緩衝區
遷移到Flat Buffers會在性能方面提供相當大的好處嗎?
更一般地說,有沒有一個很好的理由使用Protocol Buffers而不是Flat Buffers?
協議緩衝區針對線路上的空間消耗進行了優化,因此對於存檔和存儲而言,它們非常高效。但是,複雜的編碼代價很高,因此它們的計算量很大,並且C++ API大量使用動態分配。另一方面,扁平緩衝器針對高效解析和內存中表示進行了優化(例如,在某些情況下提供數據的零拷貝視圖)。
這取決於你的用例,哪些方面對你更重要。
從flatbuffer頁面引用:
爲什麼不使用協議緩衝區,或..?
協議緩衝器確實比較類似FlatBuffers,與 主要差別在於FlatBuffers不需要解析/ 拆包步驟到次級表示,然後才能訪問 數據,常常與每個對象的存儲器分配。該代碼也是一個 數量級更大。協議緩衝區既沒有可選的 文本導入/導出,也沒有聯盟等模式語言功能。