2016-03-17 130 views
1

我有一個大小爲460MB的unchunked,未壓縮的HDF5文件。我用h5repack與壓縮塊保存該文件是這樣的:HDF5分塊無壓縮導致文件大小增加

h5repack -v -l CHUNK=128x128x1 -f GZIP=1 file.h5 file_chunked.h5 

這個偉大的工程和生成的文件大小約爲原來的(170MB)的1/3。

但是,如果我嘗試使用分塊無壓縮這樣

h5repack -v -l CHUNK=128x128x1 -f NONE file.h5 file_chunked.h5 

甚至

h5repack -v -l CHUNK=128x128x1 file.h5 file_chunked.h5 

然後將生成的文件大小是大幅(10倍),比原來的大(3.9GB)。

結果數據集的維度,數據類型和內容似乎是相同的。當我在HDFView中檢查文件時,除Chunking被設置爲128x128x1以外,我可以看到與原始文件沒有區別。

我期望分塊但未壓縮的文件大小與原文大致相同。

有人可以向我解釋這個嗎?我可能在這裏缺少一些基本的東西。

謝謝!

回答

1

每個塊都有一些開銷。它們在內部是B樹中的節點。這個開銷乘以組塊的數量。如果你有相對較小的塊,你會有很多。沒有壓縮,這個開銷可能會很大。

頁約things that can affect performance說:使用

避免塊大小是非常小的。小塊大小可能會導致很多開銷,這會影響性能,另外還會使文件變得更大。

+0

謝謝西蒙, 我已經閱讀過這些說明之前,我確定我爲我的數據集選擇了合理的塊大小。它們在x和y(5,000)中相當大,在z(15)中相當小。 但我現在發現我已經混淆了尺寸的順序。它必須是1x128x128(z第一個)而不是128x128x1,這顯然會產生巨大的差異。 – Felizett

+0

太棒了!我對開銷的數量感到驚訝。這很好地解釋了它! – Simon