HDF gzip 压缩与 ASCII gzip 压缩
HDF gzip compression vs. ASCII gzip compression
我有一个包含 1100x1600 个数据点的二维矩阵。最初,我将它存储在一个 ascii 文件中,我使用命令 tar 压缩了该文件
tar -cvzf ascii_file.tar.gz ascii_file
现在,我想切换到 hdf5 文件,但它们太大了,至少在我使用它们的方式上是这样...首先,我使用 c 程序将数组写入 hdf5 文件
H5Fcreate, H5Screate_simple, H5Dcreate, H5Dwrite
按照这个顺序。 hdf文件中的数据没有压缩,而且比较大,所以我用命令压缩了
h5repack --filter=GZIP=9 hdf5_file hdf5_file.gzipped
不幸的是,这个压缩后的hdf文件仍然比压缩后的ascii文件大5倍,见下文table:
file size
--------------------------
ascii_file 5721600
ascii_file.tar.gz 287408
hdf5_file 7042144
hdf5_file.gzipped 1117033
现在我的问题是:为什么 gzip 后的 ascii 文件这么小,有没有办法让 hdf 文件更小?
谢谢。
好吧,在阅读 Mark Adler's 评论后,我意识到这个问题有些愚蠢:在 ascii 情况下,值在一定数量的数字后被截断,而在 hdf 情况下 "real" 值("real" = 我正在使用的数据类型的任何精度)被存储。
但是,有一种方法可以进一步减小我的 hdf 文件的大小:通过使用
选项应用随机播放过滤器
--filter=SHUF
我有一个包含 1100x1600 个数据点的二维矩阵。最初,我将它存储在一个 ascii 文件中,我使用命令 tar 压缩了该文件
tar -cvzf ascii_file.tar.gz ascii_file
现在,我想切换到 hdf5 文件,但它们太大了,至少在我使用它们的方式上是这样...首先,我使用 c 程序将数组写入 hdf5 文件
H5Fcreate, H5Screate_simple, H5Dcreate, H5Dwrite
按照这个顺序。 hdf文件中的数据没有压缩,而且比较大,所以我用命令压缩了
h5repack --filter=GZIP=9 hdf5_file hdf5_file.gzipped
不幸的是,这个压缩后的hdf文件仍然比压缩后的ascii文件大5倍,见下文table:
file size
--------------------------
ascii_file 5721600
ascii_file.tar.gz 287408
hdf5_file 7042144
hdf5_file.gzipped 1117033
现在我的问题是:为什么 gzip 后的 ascii 文件这么小,有没有办法让 hdf 文件更小?
谢谢。
好吧,在阅读 Mark Adler's 评论后,我意识到这个问题有些愚蠢:在 ascii 情况下,值在一定数量的数字后被截断,而在 hdf 情况下 "real" 值("real" = 我正在使用的数据类型的任何精度)被存储。
但是,有一种方法可以进一步减小我的 hdf 文件的大小:通过使用
选项应用随机播放过滤器--filter=SHUF