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

Compression 没有压缩的HDF5分块导致文件大小增加,compression,hdf5,chunking,Compression,Hdf5,Chunking,我有一个大小为460MB的未压缩HDF5文件。我使用h5repack以压缩块的形式保存文件,如下所示: 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

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

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
然后,生成的文件大小比原始文件(3.9GB)大很多(10倍)

结果数据集的维度、数据类型和内容似乎是相同的。当我在HDFView中检查该文件时,除了将Chunking设置为128x128x1之外,我看不出与原始文件有什么不同

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

有人能给我解释一下吗?我可能遗漏了一些基本的东西


非常感谢

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

关于的页面上写着:

避免使用非常小的块大小。较小的块大小可能会带来很大的开销,这会影响性能,此外还会使文件变得更大


感谢Simon,我以前阅读过这些说明,我确信我为数据集选择了一个合理的块大小。它们在x和y(5000)上相当大,在z(15)上非常小。但我现在发现我把维度的顺序搞混了。它必须是1x128x128(z优先),而不是128x128x1,这显然会产生巨大的差异。太棒了!我对管理费用感到惊讶。这就很好地解释了!