前回からの続きです。
エクスプローラー、BunBackup(標準)、BunBackup(高速)の比較です。
エクスプローラーはOSのAPIを利用していると思いますので、基本的にはBunBackup(標準)と同じはずです。ただし、コピーの前処理や後処理方法が違うと思いますので、その分が多少差に表れていると思います。
今回意外だったのは、エクスプローラー、BunBackup(標準)は測定結果のばらつきが大きいということです。通常は3回測定したものを平均
していますが、エクスプローラー、BunBackup(標準)の場合は、それよりも多く測定し、大きく外れたものをはずして平均しています。はっきりした
ことはわかりませんが、OS側の状況によって影響を受けやすいのかもしれません。BunBackup(高速)や他の高速ファイルコピーソフトは比較的安定
した速度になっています。
高速ファイルコピーの効果は環境に大きく依存します。以下の結果は一例とお考えください。
以下はエクスプローラーを100としたときの数値です。
パターン1526KBのファイルを1007個バックアップしたとき
| エクスプローラー |
100 |
| BunBackup(標準) |
92 |
| BunBackup(高速) |
90 |
基本的に、高速ファイルコピーはオーバーヘッドが大きいので、小さなファイルのコピーには向きません。
バックアップの場合は、小さなファイルと大きなファイルが混在することが多いため、BunBackup(高速)では小さいファイルでも遅くならない工夫をしています。その効果が多少現れているのではないかと思います。
パターン2
2MBのファイルを483個バックアップしたとき
| エクスプローラー |
100
|
| BunBackup(標準) |
93
|
| BunBackup(高速) |
90 |
ファイルサイズが2MBではまだバッファが有効に働きませんので、基本的にはパターン1と同じ傾向です。
ちなみにBunBackup(高速)は、一度に読み書きするバイト数は4MBです。
パターン3
4MBのファイルを279個バックアップしたとき
| エクスプローラー |
100
|
| BunBackup(標準) |
105
|
| BunBackup(高速) |
93 |
ファイル容量が4MBではまだ大容量バッファが有効に働きませんので、基本的にはパターン1と同じ傾向です。
パターン4
10MBのファイルを98個バックアップしたとき
| エクスプローラー |
100
|
| BunBackup(標準) |
93
|
| BunBackup(高速) |
65 |
このあたりから大容量バッファが有効にきき、マルチスレッドも効率よく動作するようになります。
今回の測定ではこの数値がマックスです。
パターン5
71MBのファイルを18個バックアップしたとき
| エクスプローラー |
100
|
| BunBackup(標準) |
101
|
| BunBackup(高速) |
78 |
パターン4よりも遅くなっているのはメモリ効率の関係かもしれません。
バッファサイズを調整すればもう少し速くできるかもしれませんが、今回は全てのパターンでバッファサイズを固定して測定しています。
これ以上大きなファイルも試してみましたが、おおよそパターン5と同じ傾向でした。
こちらでバッファサイズをいろいろ変更してみましたが、単に大きくすれば速くなるという訳ではなく、試した限りでは一度の読み書きは4~8MBがベストでした。
このテスト結果からわかることは以下の通りです。
- 小さいファイルにはあまり効果はない
- 高速ファイルコピーはおおよそ20%前後時間を短縮できる
- 高速ファイルコピーの効果は最大で35%減
- バッファサイズは大きいほど速い訳ではない(一度の読み書きは4~8MBが最適)
つまり、バッファの2倍以上のファイルサイズで効果的に動作し、約2割時間短縮できる、と考えられます。
たとえば、コピーするファイルが1GBあり、通常ファイルコピーに1分かかるとすると、高速ファイルコピーで48秒にすることができ、12秒節約すること
ができます。この12秒短縮が重要なのかどうかは微妙だと思いますが、コピーするファイルが数GBあるのであれば、それなりに効果があると判断できるかも
しれません。
(あくまでも今回測定した条件によるものです。短縮時間は環境によります)
次のブログに続きます。