执行相同操作的命令之间的性能差异

Laj*_*rek 0 performance shell debian

有什么不同?它是在同一个地方执行的吗?

tar -czf files/compressed/gzip/archive.tar.gz -C files/original .

tar -c -C files/original . | gzip -1 > files/compressed/gzip/archive.tar.gz
Run Code Online (Sandbox Code Playgroud)

cuo*_*glm 6

让我们做一些测试。

tar 独自的:

time sh -c 'tar -czf test.tar.gz ~/Downloads'
tar: Removing leading `/' from member names
=====
JOB sh -c 'tar -czf test.tar.gz ~/Downloads'
74%    cpu
30.02s real
20.64s user
1.82s sys
Run Code Online (Sandbox Code Playgroud)

tar管道到gzip

time sh -c 'tar -c ~/Downloads | gzip -1 > test.tar.gz'
tar: Removing leading `/' from member names
=====
JOB sh -c 'tar -c ~/Downloads | gzip -1 > test.tar.gz'
65%    cpu
27.23s real
16.07s user
1.88s sys
Run Code Online (Sandbox Code Playgroud)

在我看来,tar管道gzip可以更快,因为它们在多核机器中并行运行(我的有 2 个 CPU)似乎是合理的。