【数値計算】Pythonによるファイル入出力の高速化

プログラムの動作速度の改善を試みていたところ,numpyのloadtxt関数を使っていたファイルの読み込みにかなりの時間をとっていることが分かりました.約1GBのアスキーファイルを読み込むのに40秒超もかかっていたため,そこまでの時間がかかることはあり得ないように思い色々と試した結果,pickleモジュールを使ったデータのシリアライズによって読み込み時間が0.25秒となり,100倍以上高速化されました.

 

バイナリ化されてファイルサイズが半分以下になった上で,約0.32GBを4分の1秒で読み込んでいるので,その速度は約1.3GB/sということになります.シーケンシャルリードのスペック値が2.4GB/sとなっているPCIe3.0接続のSSDからデータを読み込んでいるので,もう少し早くなる余地はあるかもしれませんが,単一の記録装置からの読み込みとしては十分な速度ではないかと思います.

2017年03月02日|ブログのカテゴリー:数値計算