古田@帰省中です。
現在、仕事で必要な数百MBのファイルを、横浜の自宅のサーバーからVPN経由でコピーしています。その待ち時間中、時々感じる不満を思い出したので時間つぶしに書いてみます。
WindowsのようなマルチタスクOSでは、複数のファイル・コピー処理を並行して実行することができます。2つのコピー作業を同時にやらせたからといって半分の時間で済むワケではないのですが、一緒にコピー指定しておけばあとは放置しておけば両方ともやっといてくれるので、ユーザ・インターフェイスとしては優れていますね。
ですが、このWindows(というかエクスプローラー)のコピー待ち行列処理には不満があります。「半分の時間で済むワケではない」と書きましたが、コピーの複数同時進行はむしろ1つずつ連続でコピーをするより効率が落ちるんですよね。例えばHDDのヘッドの動きが、ファイルAを書き込む部分とファイルBを書き込む部分を交互に行き来するので、その移動時間が無駄になります。ファイルAを完全に終えてからファイルBにとりかかる方が合理的なワケです。ユーザ側からしてもこの仕様は不便です。例えばコピーに時間がかかるようなファイルとして動画があります。動画Aをコピーしている時に、「あ、こっちもコピーしよ」と動画Bのコピーも始めます。するとエクスプローラーは両者を少しずつコピーしようとするので、どちらも半分のスピードでしか進行しません。どちらかでも終わらせてくれれば、そっちから視聴し始められるものを…
というワケで、コピー中に更にコピー操作をした場合、並列で始めるのではなく、コピー待ちのリストに追加するような実装にしてはどうでしょう?操作方法としては、進行中のコピー・ダイアログにファイルをドロップすると、同じコピー先への待ち行列に追加される、みたいなカンジで。もちろんコピー機のように「すぐ終わるから先に済ませたい」というシチュエーションもあるでしょうから、ALTを押しながらドロップした場合は割り込みで先に処理する、なんてワザが使えるとなお良いですね。
今、「実はできたりして?」と思って試してみました。コピー・ダイアログにファイルをドロップすることは可能でした(ちょっとびっくり)が、処理としては新しいコピー・ダイアログが開いて並列でコピーが始まってしまいました。残念。
P.S.
実は、実際に並列コピーがどれくらいパフォーマンスに影響するか計測したことはありません。むしろ「無駄にHDDヘッドがシーク処理をしているはずだ」という精神的な気持ち悪さなのかも知れません。
賛成一票。というか、きっと長らくみんな思っている不満でしょうね。ダイアログにドロップできるのはびっくり。同時コピーで遅くなる、というのは、事実そうなります。
これだけだと発展しないので、さらに付け加えると、「一時停止」をさせて欲しいと思ったりもしません?
蝶^H超大量のコピー中、緊急に別のコピーをしたくなったりして、そのコピーしたいファイルというのが、ほかならぬコピー中のドライブに存在すると、おっそろしく遅くなる、という嫌な現象が起こるわけですが、いったん停止できれば助かるわけです。
別作業もコピーなら、上記の差込コピー(急用コピーが終わり次第、元のコピーを再開)の方が、時間の無駄がなくていいと思うけど、コピー以外のHDDアクセスが激しいタスクをしたくなった時には一時停止があると良いかもね。
つーか、UNIXみたいにniceコマンドがありゃいいのかもね。タイトルバーあたりにプルダウンがあって、動的に処理優先順位を変更できるような仕組みがあったらどうだろう?割と簡単にフックできそうだなぁ。
Cygwinのniceコマンドでは優先度最低にはセットできるらしい。
巨大なファイルのコピー
GB単位の大きなファイルを複数コピーするとしよう。 コピー元は一カ所にまとまっていないので、エクスプローラで逐次選択していきたい。 コピー元とコピー先をエ…