我有一个未经压缩的未压缩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之外,我看到原始文件没有区别。
我希望分块但未压缩的文件大小与原始文件大致相同。
有人可以向我解释一下吗?我可能在这里遗漏了一些基本的东西。
感谢!
答案 0 :(得分:1)
每个块都有一些开销。在内部,它们是B树中的节点。此开销乘以块的数量。如果你有相对较小的块,你会有很多。没有压缩,这种开销可能很大。
关于things that can affect performance的网页说:
避免使用非常小的块大小。除了使文件更大之外,可能会有很多块大小的开销,这会影响性能。