【发布时间】:2013-05-23 02:13:11
【问题描述】:
我想问一个关于压缩性能的问题 这与 hdf5 文件的块大小有关。
我手头有 2 个 hdf5 文件,它们具有以下属性。 它们都只包含一个数据集,称为“数据”。
文件 A 的“数据”:
- 类型:HDF5 标量数据集
- 没有。尺寸:2
- 尺寸尺寸:5094125 x 6
- 最大。尺寸大小:无限 x 无限
- 数据类型:64 位浮点数
- 分块:10000 x 6
- 压缩:GZIP 级别 = 7
文件 B 的“数据”:
- 类型:HDF5 标量数据集
- 没有。尺寸:2
- 尺寸尺寸:6720 x 1000
- 最大。尺寸大小:无限 x 无限
- 数据类型:64 位浮点数
- 分块:6000 x 1
- 压缩:GZIP 级别 = 7
文件 A 的大小: HDF5----19 MB CSV-----165 MB
文件 B 的大小: HDF5----60 MB CSV-----165 MB
与 csv 文件相比,它们都显示出对存储数据的极大压缩。 但是文件A的压缩率是原始csv的10%左右, 而文件B的只有原始csv的30%左右。
我尝试了不同的块大小以使文件 B 尽可能小,但似乎 30% 是最佳压缩率。我想问为什么文件A可以实现更大的压缩而文件B不能。
如果文件B也能实现,那么chunk size应该是多少?
是否有任何规则可以确定用于压缩目的的 HDF5 的最佳块大小?
谢谢!
【问题讨论】:
-
我猜压缩可能还取决于特定块内数据的相似性。所以很难说为什么会有差异。有关分块和性能的更多信息,请参阅: - github.com/h5py/h5py/wiki/Guide-To-Compression - hdfgroup.org/HDF5/doc/UG/index.html - pytables.org/moin/HowToUse#Presentations
-
谢谢,我同意很难解释差异,尽管压缩率确实很低。此外,我想知道它是否与数据集的维度有关,例如 100 x 100 和 1000 x 10 即使内部数据相同,也会有不同的压缩性能。
标签: compression hdf5 chunking