web-dev-qa-db-ja.com

zipファイルをフラッシュドライブに転送してから解凍するか、解凍したファイルを転送する方が速いでしょうか?

フラッシュドライブにコピーされたZipフォルダを解凍するのにかかる時間を考慮すると、何が速いでしょうか?圧縮されたフォルダーをUSBフラッシュドライブにコピーしてから、フラッシュドライブで解凍するか、圧縮されていないフォルダーをフラッシュドライブにコピーします。

ファイルはコピー前にすでに圧縮されているため、ファイルの圧縮にかかる時間を考慮しないでください。 USB HDDまたはSSDからUSBフラッシュドライブ(どちらもUSB 3.0をサポート)にコピーできます。

この特定のケースでは、合計115,518ファイルの9つのZipファイルを転送したいのですが、ほとんどのファイルは本当に小さな画像ファイルです(合計9つのファイルは非圧縮で15 Gb、圧縮で10 Gbになります)。

2
Suco

フラッシュドライブにコピーされたZipフォルダを解凍するのにかかる時間を考慮すると、何が速いでしょうか?圧縮されたフォルダーをUSBフラッシュドライブにコピーしてから、フラッシュドライブで解凍するか、圧縮されていないフォルダーをフラッシュドライブにコピーします。

おそらく後者。

解凍などはコンピュータのCPUによって行われることを忘れないでください。データをドライブ(フラッシュまたはHDD)にコピーしたり、データをコピーしたりすることはできますが、ドライブ自体に解凍するように指示することはできません。

したがって、最初の計画には次のものが含まれます。

  1. 10GBのデータをディスクからフラッシュにコピーする
  2. それらの10GBを読み取る戻るフラッシュからRAMへ
  3. それを解凍する
  4. RAMからフラッシュに15GBの解凍されたデータを書き込む
  5. 手順1の後に残った無駄な圧縮ファイルを削除する

二番目:

  1. 内部ディスクからRAMに直接10GBを読み取る
  2. それを解凍する
  3. 15GBの解凍されたデータをフラッシュに書き込む

最初の計画には2倍の読み取りと書き込みが含まれていることに注意してください。ただし、それだけではありません。実際には、手順2〜3〜4は順番に行われるのではなく、並行して行われます。これにより、あるドライブからの読み取りと別のドライブへの書き込みのプロセスが速くなりますが、同じドライブが両方の読み取りを行う場合ははるかに遅くなります。と書き込みます。

2
user1686

Zipファイルをフラッシュドライブに転送してから解凍するか、解凍したファイルを転送する方が速いでしょうか?

間違いなく正解は "unzipファイルを転送する"です。

もちろん、すべてのファイルのzipアーカイブを転送する方が高速ですが、「次に解凍する」の追加手順を指定しました。

どうやらあなたはドライブやストレージデバイス上でローカルに「解凍」できないことに気づいていないようです。
ソースアーカイブファイルを(保存されている場所から)読み取る必要があります。その後、CPUによってメインメモリで解凍が実行されます。

したがって、すでにフラッシュドライブに転送されているファイルを解凍するには、ファイルをフラッシュドライブから読み取り、解凍してから、個々のファイルをフラッシュドライブに書き込む必要があります。

(個々のファイルを書き込む)最後のステップだけでも、後者の選択と同等です。したがって、最初にZipファイルを書き込んでから、それらを読み戻す(ただし、キャッシュによって最適化される可能性がある)という追加の手順により、最初の選択がより長い操作になるはずです。



質問を見る別の方法は、操作間である程度の並行性を想定し、タイムライムで推測することです。

したがって、ケース1の場合、Zipファイルをフラッシュドライブにコピーするには、書き込み操作と同時に読み取り操作が必要です(ただし、ブロック遅延があります)。
書き込みには、読み取りよりも実行に時間がかかります(たとえば、 多くの個別のファイルに分散している場合、同じ量のデータのコピーに時間がかかるのはなぜですか? を参照)。
コピーが完了すると、読み取り、解凍してフラッシュドライブに書き戻すことができます。
読み取り、解凍、および書き込み操作の同時実行にもかかわらず、全体的なタイムラインは、すべての非圧縮ファイルを書き込む時間によって支配されます。

RRRRRRRRR  
 WWWWWWWWWW  
           rrr    rrr   rrr  
            DDDD   DDDD  DDDDD
              WWWWWWWWWWWWWWWWWWWWW  
time-->

ケース2は、単純な読み取り、解凍、および書き込みです。
この場合、すべての非圧縮ファイルを書き込むのに同じ時間が必要です。

RRR    RRR   RRR  
 DDDD   DDDD  DDDDD
   WWWWWWWWWWWWWWWWWWWWW

読み取り操作の最初の段階が同じデバイスからの同じ量のデータに対するものであり、書き込みの最後の段階が同じデバイスへの同じ量のデータに対するものである場合、ケース1がケース2よりも速く完了するとどのように期待できますか
および
ケース1は、最初にコピーを実行する必要があるために障害がありますか?

1
sawdust

同じドライブに解凍する場合は、わざわざ圧縮しないでください。他のドライブに解凍する場合は、圧縮を検討してください。ファイルシステムへの呼び出しが少なくなります(データとファイルエンティティが少なくなります)IO)

0
Pavlus