gunzip 是在内存中工作还是写入磁盘?

Rya*_*zel 9 compression gzip

我们将日志文件压缩以节省空间。通常我们将它们压缩,然后做

gunzip -c file.gz | grep 'test'
Run Code Online (Sandbox Code Playgroud)

查找重要信息,但我们想知道将文件解压缩然后执行 grep 是否更快。

cat file | grep 'test'
Run Code Online (Sandbox Code Playgroud)

如果将 gzip 读入内存并解压缩,那么第一个会更快,但如果没有,那么第二个会更快。有谁知道 gzip 如何解压缩数据?

McJ*_*eff 5

捕获未压缩文件总是会更快,因为没有与之相关的开销。即使您不编写临时文件,您也会经历解压动作,这会消耗 CPU。如果您经常访问这些文件,如果有足够的空间,最好不要压缩它们。

也就是说,将数据转储到标准输出(gunzip -c、zcat 等)不会触发写入临时文件。数据直接通过管道传输到grep命令,该命令将未压缩的流视为它自己的标准。

关于 LZ* 编码的维基百科文章在这里:http : //en.wikipedia.org/wiki/LZ77_and_LZ78