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

q1)我可以检查我是否做了一个gzip -c文件| encryption(一些参数)

a)gzip是否一行一行地打印输出,并将其传送给encryptionfunction或

b)gzip将会执行第一个,那么输出将一次全部input到encryption函数中?

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

q2)将执行gzip | encryption有更好的性能考虑,然后gzip,然后encryption

问候,Noob

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

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

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

“表演”一词太模糊,而且太复杂的地方给出肯定或否定的答案。

gzip -c file | encrypt gzip -c file | encrypt ,为一个足够大的文件,将会看到encryptgzip并行工作。 也就是说, gzip压缩文件的最后一个块之前encrypt将会加密第一个压缩块。

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

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