今回はデカい画像データをh5形式で保存しなおしました.
h5pyでは,以下の様に書くと変数をgzipで圧縮できます.
x = cv2.imread("デカい画像1.png")
y = cv2.imread("デカい画像2.png")
with h5py.File("out.h5", "w") as f:
f.create_dataset("data1", data=X, compression="gzip", compression_level=4)
f.create_dataset("data2", data=y, compression="gzip", compression_level=4)
何度かやった結果の平均とかではないので,時間については不確かです.
圧縮レベル | 出力ファイルサイズ(GB) | 出力時間(sec) | 読み込み時間(sec) |
---|---|---|---|
無圧縮 | 6.83 | 7.7 | 10.1 |
1 | 1.48 | 81.3 | 53.7 |
4(デフォルト) | 1.47 | 107.8 | 57.2 |
9 | 1.46 | 204.3 | 56.6 |
データが変わると結果も変わるのかもしれませんが,
- 圧縮なしと圧縮ありでは,ファイルサイズに大きな差があるが,入出力にかかる時間も大幅に増える.
- 圧縮レベルを上げると,処理時間は割と長くなるが,圧縮率はそんなに上がらない
- 読み込み時間は圧縮レベルに関わらずあんまり変わらない
シンプルにgzipのベンチマークと同じような傾向だと思いますが,
圧縮有り,無しの入出力時間の差は気になるケースがありそうですね.