Read Comparison with pickle vs npy vs mat vs hdf5 format
各種フォーマット
- pickle
- npy
- mat
- hdf5
におけるReadの比較を行ったのでそれをレポート
データ
- 元Data
- cifer10 (obtained from Kaggle so that it is jpeg)
- 50000 images
- 総サイズ: 197M
- 平均サイズ: 3.94 K
- 変換後のデータ
- formatによって異なるが,中身はnp.ndarryaがいくつかの単位で固まっている
比較フォーマット
- pickle
- npy
- mat
- hdf5
実験内容
データを読む際は一応disk cacheを削除している.
実験1
- 1データ1ファイルに入っている場合
- 元データは画像なので1画像(ndarray返還後)が1ファイルに入っているという意味
実験2
- nデータが1ファイルに入っている場合
- nを32, 64, 128の場合で比較する
コード
実験1
ここにある
- convert_cifier2aformat.py
- comp_pkl_load.py
- comp_mat_load.py
- comp_npy_load.py
- comp_hdf5_load.py
- comp_loads.sh
実験2
ここにある
- convert_cifier2aformat_with_n_units.py
- comp_pkl_load_n.py
- comp_mat_load_n.py
- comp_npy_load_n.py
- comp_hdf5_load_n.py
- comp_loads_n.sh
結果
line profilerで計測しているけれど最終的な結果のみを示す.
実験1
pickle | mat | npy | hdf5 |
---|---|---|---|
500.2 | 503.341 | 532.176 | 518.693 |
予想に反してpickleとmatが早かった.
実験2
n | pickle | mat | npy | hdf5 |
---|---|---|---|---|
32 | 32.2878 | 18.6623 | 18.8135 | 16.6364 |
64 | 15.8134 | 10.7143 | 10.662 | 7.36364 |
128 | 14.8304 | 7.19031 | 6.70373 | 3.8299 |
hdf5 > npy >= mat > pickle
な感じな気がする.hdf5が早いと教わったのでそのとおりとなった.
これからは,いくつかのchunkになったndarrayの読み出しにはhdf5 (h5py)を使おう.