KZKY memo

自分用メモ.

Read Comparison with pickle vs npy vs mat vs hdf5 format

各種フォーマット

  • pickle
  • npy
  • mat
  • hdf5

におけるReadの比較を行ったのでそれをレポート

環境

  • OS
    • Ubuntu14.04
  • CPU
    • Intel(R) Core(TM) i5-2540M CPU @ 2.60GHz
  • Disk
    • Hitachi HTS54756
  • FS

データ

  • 元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

f:id:KZKY:20150809005958p:plain

hdf5 > npy >= mat > pickle

な感じな気がする.hdf5が早いと教わったのでそのとおりとなった.

これからは,いくつかのchunkになったndarrayの読み出しにはhdf5 (h5py)を使おう.