gzip和管道输出(性能考虑)

时间:2015-06-19 07:55:30

标签: linux unix encryption gzip solaris

q1)我可以检查一下是否可以 gzip -c文件|加密(一些参数)

a)gzip逐行打印出输出并将其传递给加密函数或

b)gzip将执行1st,然后输出将一次性输出到加密函数?

=============================================== =====

q2)将执行gzip |加密有任何更好的性能考虑因素然后gzip,然后加密

此致 小白

2 个答案:

答案 0 :(得分:2)

Gzip是一个流式压缩器/解压缩器。因此(对于足够大的输入)压缩器/解压缩器在看到整个输入之前开始写输出。

这是gzip压缩用于HTTP压缩的原因之一。发件人可以在仍在生成内容时进行压缩;收件人可以解压缩内容的第一部分,同时仍然接收其余部分。

Gzip不能“逐行”工作,因为它不知道一行是什么。但它确实工作“chunk-by-chunk”,压缩器定义了块的大小。

“表现”一词太含糊,而且面积过于复杂,无法给出答案。

对于gzip -c file | encrypt,对于足够大的文件,encryptgzip会同时发挥作用。也就是说,encrypt将在 gzip压缩最后一个文件块之前加密第一个压缩块

答案 1 :(得分:0)

管道缓冲区的大小取决于实现。在SunOS下,它是4kB。也就是说:gunzip < file.gz | encrypt将以4k块的形式移动。同样,它取决于操作系统。 CygWIN可能表现完全不同。

我应该补充说这是man 7 pipe。搜索 PIPE_BUF