我需要幫助做出決定。我需要在應用程序中傳輸一些數據,並且必須在這三種技術之間進行選擇。 我已閱讀有關所有技術一點點(教程,文檔),但仍不能決定...谷歌協議緩衝區,HDF5,NumPy比較(傳輸數據)
他們如何比較?
我需要支持的元數據(能力接收文件,無需任何額外的信息/文件閱讀),快速讀/寫操作,有能力來存儲動態數據將是一個加號(如Python對象)
事我已經知道:
- NumPy是非常快但不能存儲動態數據(如Python對象)。 (關於元數據呢?)
- HDF5速度非常快,支持自定義屬性,易於使用,但不能存儲Python對象。 也HDF5本地串行化NumPy數據,所以,恕我直言,NumPy沒有HDF5的優勢
- Google Protocol Buffers也支持自我描述,速度很快(但Python支持當前時間較慢,而且緩慢)。可以存儲動態數據。缺點 - 自我描述不適用於Python,大於等於1 MB的消息不是很快(讀取「慢」)的序列化/反序列化。
PS:數據I需要轉移是NumPy的/ SciPy的(陣列,複雜結構的陣列等)的 「工作的結果」
UPD:需要跨語言訪問(C/C++/Python)的
如果您正在考慮HDF5,請使用PyTables。 http://www.pytables.org/moin它基本上允許您構建類,以便輕鬆快速地將元數據和numpy數組存儲,重新創建和查詢到HDF5。因爲它只是將內容存儲到HDF5中,所以您應該能夠通過常用的庫輕鬆訪問C/C++中的內容。 – 2010-11-08 17:43:05
是的,我知道PyTables,你很容易使用和跨語言,但他們不允許我存儲Python對象... – 2010-11-08 18:05:37