gzip 和管道输出(性能考虑)
gzip and pipe to output (performance consideration)
q1) 我可以检查一下我是否做了一个
gzip -c 文件 |加密(一些参数)
a) gzip 是否逐行打印输出并将其通过管道传递给加密函数或
b) gzip 将首先执行,然后输出将立即通过管道传输到加密函数?
============================================= =======
q2) 将执行 gzip | encrypt 比 gzip 有更好的性能考虑,然后是 encrypt
此致,
菜鸟
Gzip 是一种流媒体 compressor/decompressor。因此(对于足够大的输入)compressor/decompressor 在看到整个输入之前开始写入输出。
这就是将 gzip 压缩用于 HTTP 压缩的原因之一。发送方可以在仍在生成内容时进行压缩;收件人可以解压缩内容的第一部分,同时仍能收到其余部分。
Gzip 不起作用 "line-by-line",因为它不知道一行是什么。但它确实有效 "chunk-by-chunk",其中压缩器定义块的大小。
"Performance" 这个词太模糊,而且这个领域太复杂,无法给出是或否的答案。
使用 gzip -c file | encrypt
,对于足够大的文件,将看到 encrypt
和 gzip
同时工作。也就是说,encrypt
将在 加密第一个压缩块之前 gzip
压缩文件的最后一个块。
管道缓冲区的大小取决于实现。在 SunOS 下,它是 4kB。即:gunzip < file.gz | encrypt
将移动 4k 个块。同样,这取决于 OS。 CygWIN 的行为可能完全不同。
我应该补充一点,这是在 man 7 pipe
中。搜索 PIPE_BUF.
q1) 我可以检查一下我是否做了一个 gzip -c 文件 |加密(一些参数)
a) gzip 是否逐行打印输出并将其通过管道传递给加密函数或
b) gzip 将首先执行,然后输出将立即通过管道传输到加密函数?
============================================= =======
q2) 将执行 gzip | encrypt 比 gzip 有更好的性能考虑,然后是 encrypt
此致, 菜鸟
Gzip 是一种流媒体 compressor/decompressor。因此(对于足够大的输入)compressor/decompressor 在看到整个输入之前开始写入输出。
这就是将 gzip 压缩用于 HTTP 压缩的原因之一。发送方可以在仍在生成内容时进行压缩;收件人可以解压缩内容的第一部分,同时仍能收到其余部分。
Gzip 不起作用 "line-by-line",因为它不知道一行是什么。但它确实有效 "chunk-by-chunk",其中压缩器定义块的大小。
"Performance" 这个词太模糊,而且这个领域太复杂,无法给出是或否的答案。
使用 gzip -c file | encrypt
,对于足够大的文件,将看到 encrypt
和 gzip
同时工作。也就是说,encrypt
将在 加密第一个压缩块之前 gzip
压缩文件的最后一个块。
管道缓冲区的大小取决于实现。在 SunOS 下,它是 4kB。即:gunzip < file.gz | encrypt
将移动 4k 个块。同样,这取决于 OS。 CygWIN 的行为可能完全不同。
我应该补充一点,这是在 man 7 pipe
中。搜索 PIPE_BUF.