没有压缩的HDF5分块会导致文件大小增加

时间:2016-03-17 16:29:07

标签: compression hdf5 chunking

我有一个未经压缩的未压缩HDF5文件,大小为460MB。我使用h5repack来保存带有压缩块的文件,如下所示:

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

这很好用,生成的文件大小约为原始文件的1/3(

)。

但是,如果我尝试使用 chunking without compression ,就像这样

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

甚至

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

然后生成的文件大小比原始文件大小(10x)(3.9x)。

结果数据集的维度,数据类型和内容似乎相同。当我在HDFView中检查文件时,除了将Chunking设置为128x128x1之外,我看到原始文件没有区别。

我希望分块但未压缩的文件大小与原始文件大致相同。

有人可以向我解释一下吗?我可能在这里遗漏了一些基本的东西。

感谢!

1 个答案:

答案 0 :(得分:1)

每个块都有一些开销。在内部,它们是B树中的节点。此开销乘以块的数量。如果你有相对较小的块,你会有很多。没有压缩,这种开销可能很大。

关于things that can affect performance的网页说:

  

避免使用非常小的块大小。除了使文件更大之外,可能会有很多块大小的开销,这会影响性能。