ショボ短歌会

HDDのサイズを調べるだけで18時間以上かかるんですが?
3TBのデータを古いHDDから新しいHDDにFastcopyを使ってコピーしました。15時間位かかりました。Fastcopyのベリファイ機能を使い忘れたため、WinMergeを使って今現在両方のHDDのサイズ等に間違いや差異がないかを調べているんですが、18時間経過した現在もまだ終わっていません。
3TBのデータをコピーするのに15時間で終わったのに、たかがサイズやら数値を調べるだけなのに、なんでデータのコピーよりも時間がかかるんですかこれ?
もっとマシな方法ないんですか?

HDDはWD60EZAX [6TB SATA600 5400]
ケースはGW3.5AM-SU3G2P/S

A 回答 (1件)

一般的な話になりますが、ファイルのコピーは、ファイル単位で順次データを読み込んで、ファイルを書き込むといった、流れ作業になります



しかし、WinMergeなどの場合においては、ほぼ、メモリマップドファイルという技術を使います

メモリマップドファイルというのは、ファイルサイズ分のメモリ空間を予約しておき、例えば、ファイルの先頭から、1メガバイトのデータにアクセスしたい時、アプリがメモリ上のメモリマップドファイルのメモリ位置の先頭から1メガバイト目にアクセスすることにより、OSがそのメモリに位置に該当するファイルオフセットのデータを自動的に読み込んでくれる機能です

これを使うメリットとしては、単体のアプリケーションが、大きなファイルを読み込む時に、メモリを占有する必要がないという面、また、アプリケーションからすると、すでにメモリ上にファイルの全てを読み込んでるような状況のように実行できるので、アプリケーションの作りは簡単になります

デメリットとしては、メモリアクセスに対する例外処理の発生や、OSによる例外処理のハンドリングなど、メモリマップドファイルの、メモリウィンドウサイズによってはオーバーヘッドが増加します

単純計算で、1ファイルあたり0.5秒の遅延が発生したとしても、ファイル1個とか、10個程度であれば、あまり大したオーバーヘッドにはなりませんが、2万ファイルとかになってしまうと、単純計算で1万秒、つまり、3時間近いロスが発生します

Windowsであれば、ファイルごとのチェック、fc コマンを連続的に、バッチファイルで実行することで、改善することは可能ですが、2つのHDDから、同じファイルを読み込むことになるので、書き込み時と同じ程度の時間はかかると思いますが、多少は短縮できるかもしれません

また、正確なパフォーマンステストをしたわけではないので、一概に言えませんが、CPUの性能が上がれば、この辺りのオーバーヘッドも小さくなりますし、メモリアクセスのスピードもあがれば、速くなるとは思いますが、基本的に、大量のファイルや、大量のデータのコピーを行う場合には、時間がかかってしまうのは、仕方なく、短縮したければ、SATA3のHDDではなく、M.2 NVMe SSDを利用するとか、メインPCではなく、サブPCでそういった作業は行うなどが、抜本的な解決策だと思います
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A