Compression

gunzip 是在記憶體中工作還是寫入磁碟?

  • June 14, 2010

我們對日誌文件進行了 gzip 壓縮以節省空間。通常我們將它們壓縮並做

gunzip -c file.gz | grep 'test'

查找重要資訊,但我們想知道保持文件未壓縮然後執行 grep 是否更快。

cat file | grep 'test'

已經有一些關於 gzip 如何工作的討論,如果它是有意義的,如果它將它讀入記憶體並解壓縮,那麼第一個會更快,但如果不是,那麼第二個會更快。有誰知道gzip如何解壓縮數據?

對未壓縮的文件進行分類總是會更快,因為沒有與之相關的成本。即使您沒有編寫臨時文件,您也正在經歷解壓動作,這會佔用 CPU。如果您經常訪問這些文件,那麼如果您有空間,最好將它們保持未壓縮狀態。

也就是說,將數據轉儲到標準輸出(gunzip -c、zcat 等)不會觸發寫入臨時文件。數據直接通過管道傳送到grep命令,該命令將未壓縮的流視為它自己的標準。

關於 LZ* 編碼的維基百科文章在這裡:http ://en.wikipedia.org/wiki/LZ77_and_LZ78 。

引用自:https://serverfault.com/questions/151017