Gzipを使用してハイパーバイザーのあるファイルとないファイルの圧縮についてベンチマークを行っています。ファイルが完了するまでにかかる時間をテストするために実行しているコマンドは次のとおりです。
time gzip -c filename.txt > filename.txt.gz
新しいファイルに対して初めてコマンドを実行するときは、再起動するまでの後続のテストの時間は常に〜2倍なので、少し混乱しています。例えば:
1st run: .50 seconds
2nd run: .25 seconds
3rd run: .26 seconds
...
なぜそのような時差があるのでしょうか? gzipは圧縮をメモリまたは一時ファイルのような他の場所に保存しますか?
助けてくれてありがとう!
gzip
はファイルをキャッシュしませんが、Linuxはキャッシュします。プログラムの実行に不要なメモリはディスクキャッシュとして使用され、最初にfilename.txt
を読み取った後、キャッシュに追加されます。その間それが変更されていなければ、その後ファイルを読み取ると、メモリ内にすでにコピーが取得されます。これはおそらく高速化の原因です。