Speeding up of Python File Copying

はじめに

前回の反省を踏まえ、自作クラスを使ってファイルコピーを高速化してみる。

原理

1つずつファイルを処理すると、ランダムアクセスが増えて、遅くなるのだから、連続で読み込んで、連続で書き出すようにすればいい。

ただしメモリの容量の限界があるので、初期設定では、100MB毎に処理するようにした。

結果

先程の4秒以上掛かった処理が0.9秒程にまで高速化した。無論メモリ使用量は増えている。

ただ、mem=0(つまり毎回書き込む)にすると、0.7秒とか更に早くなって、キャッシュの威力が凄いのか、一旦メモリに展開するから、そんなの関係無く早いのか良く分からない。

ちなみにこのクラスには、1つでメモリ容量よりもデカいファイルを読むと死ぬという既知のバグがあるので、そんな訳ねーよHAHAHAと言える用途にのみ使うことを推奨します。

追伸

5/6 何か初期設定がミスっていたので修正。標準で100MBじゃなくて100GBになってた。