동일한 작업을 수행하는 명령 간의 성능 차이

동일한 작업을 수행하는 명령 간의 성능 차이

차이점은 무엇입니까? 동일한 방식으로 수행됩니까?

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

tar -c -C files/original . | gzip -1 > files/compressed/gzip/archive.tar.gz

답변1

몇 가지 테스트를 해보자.

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

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

파이프라인 은 멀티 코어 시스템(내 CPU는 2개)에서 병렬로 실행되므로 tar파이프라인이 더 빠를 수 있다는 것이 이해가 됩니다 .gzip

답변2

전자의 경우 tar의 구현은 gzip 라이브러리를 사용하여 압축 자체를 수행합니다. 후자의 경우 tar의 출력은 압축을 수행하는 별도의 실행 파일로 파이프됩니다. 전자는 파이프에 데이터를 쓰거나 파이프에서 데이터를 읽는 추가 시스템 호출을 포함하지 않기 때문에 약간 더 효율적일 수 있지만 사람들은 아마도 차이점을 느끼지 못할 것입니다.

답변3

두 번째 옵션에는 실행해야 하는 2개의 애플리케이션이 있습니다( targzip). 이를 위해서는 추가 시간이 필요합니다. 파이프라인에는 추가 리소스도 필요합니다. 이로 인해 실행 시간이 길어집니다.

관련 정보