2012-02-10 133 views
1

如果我有一個64位整數的32^3數組,但它只包含十幾個不同的值,您能告訴HDF5使用「內部映射」來節省內存和/或磁盤空間嗎?我的意思是數組通常會以64位整數訪問,但是每個值都會在內部作爲一個字節(?)索引存儲在一個64位整數表中,可能會節省大約7/8的內存和/或磁盤空間。如果這是可能的,它實際上是節省內存,磁盤空間還是兩者兼而有之?HDF5可以執行「值映射」嗎?

回答

1

我不認爲HDF5提供了開箱即用的功能,但沒有理由不能實現例程來將數據寫入HDF5文件並以您的方式重新讀取似乎想要。我想你可以將你的查找表和你的數組寫入不同的數據集。

這是可能的,但不是我有任何證據表明,HDF的壓縮設施將充分壓縮整型數據集,您可以節省一定量的空間。

然後,對於我使用的HDF5文件(10 GB),我不打算嘗試設計自己的編碼方案來節省如此適量的空間,因爲32768元素的64位數組可能會能夠免除。當然,您可以將2097152位的數據集轉換爲131072中的一個,但是磁盤空間(即使是RAM)現在還沒那麼嚴密。

我開始形成,你要使用HDF5的印象,或許,智能手機:-)

+0

嗯,這是沒有那麼多的磁盤空間本身的事宜中,而是RAM和「帶寬」在客戶端和服務器之間。如果文件在服務器上被壓縮,那麼它會節省帶寬,但不能訪問壓縮的數據而不先解壓縮,這樣不會節省RAM。表映射可以節省RAM和帶寬,但是我認爲手動執行映射似乎並不困難。 – 2012-02-10 16:15:12