제목의 질문에.

제목의 질문에.

다음 메시지를 받았습니다.

$ time $(tee < infile > outfile)
real 0m14.721s
user 0m0.094s
sys 0m2.629s

$ time $(cat infile | tee > outfile)
real 0m8.931s
user 0m0.123s
sys 0m3.168

이 차이점은 리디렉션/파이핑으로 인한 것입니까, 아니면 다른 것이 있습니까?

두 번째로 실행하면 다음과 같은 결과가 나타납니다.

$ time $(tee < infile > outfile)
real 0m11.558
user 0m0.113s
sys 0m2.691s

$ time $(cat infile | tee > outfile)
real 0m8.822s
user 0m0.120s
sys 0m3.125s

PS infileoutfile둘 다 MP4 파일이며 RAM에 캐시되어 있습니다.

답변1

(사건에 의해 극복됨): 이러한 예는 제목과 동일하지 않습니다.

제목의 질문에.

버전은 cat약간 느려질 것입니다.



[편집자 주: 이 답변의 나머지 부분은 철자 오류가 포함된 질문의 이전 버전을 기반으로 합니다. 질문이 편집되어 다음 내용이 더 이상 관련이 없습니다. ]

본문에 있는 질문에 대해서는

첫 번째 명령은 두 개의 파일을 씁니다. 그렇기 때문에 속도가 느려집니다. 두 번째는 추가 프로세스( cat)를 시작하는 것이지만 추가 파일을 작성하는 것에 비해 속도가 약간 느려집니다.

읽기가 캐시되므로 두 번째 실행이 더 빨라질 수 있습니다.

설명하다

tee < infile tee > outfile기능적으로는 동일 cat infile | tee tee > outfile하지만 tee > outfile. 처음 두 개는 두 개의 파일을 생성하고 세 번째는 하나의 파일을 생성하므로 속도가 더 빨라집니다.

관련 정보