没有压缩的 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.
我有一个未分块、未压缩的 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.