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

HDF5 chunking without compression leads to increase in file size

我有一个未分块、未压缩的 HDF5 文件,大小为 460MB。我使用 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 中检查文件时,除了分块设置为 128x128x1 之外,我看不出与原始文件有什么不同。

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

谁能给我解释一下?我可能在这里遗漏了一些基本的东西。

万分感谢!

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

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

Avoid using a chunk size that is really small. There can be a lot of overhead with a small chunk size, which can affect performance, in addition to making the file a lot larger.