나는 Satō Katsura의 대답에 본능적으로 동의했을 것입니다. 말된다. 그러나 테스트하기는 쉽습니다.
화면에 백만 줄을 쓰고 파일에 쓰거나 추가하고로 리디렉션하는 것을 테스트했습니다 /dev/null
. 나는 이들 각각을 차례로 테스트 한 다음 다섯 번의 복제를 수행했습니다. 이것들은 내가 사용한 명령입니다.
$ time (for i in {1..1000000}; do echo foo; done)
$ time (for i in {1..1000000}; do echo foo; done > /tmp/file.log)
$ time (for i in {1..1000000}; do echo foo; done > /dev/null)
그런 다음 총 시간을 아래에 플로팅했습니다.
보시다시피, 사토 카츠라의 추정은 정확했습니다. Satō Katsura의 답변에 따르면 제한 요소가 출력이 될지 의심되므로 출력 선택이 스크립트의 전체 속도에 실질적인 영향을 미치지 않을 것입니다.
FWIW, 내 원래의 대답은 파일 추기 및했습니다 다른 코드했다 /dev/null
리디렉션 내부 루프를.
$ rm /tmp/file.log; touch /tmp/file.log; time (for i in {1..1000000}; do echo foo >> /tmp/file.log; done)
$ time (for i in {1..1000000}; do echo foo > /dev/null; done)
John Kugelman이 의견에서 지적했듯이 이것은 많은 오버 헤드를 추가합니다. 질문 약자로,이 그것을 테스트하는 올바른 방법은 정말 아니지만, 분명 다시 여는 것을 반복적으로 파일을 비용 같이 난 여기를 떠날거야 내에서 스크립트 자체를.
이 경우 결과가 반대로됩니다.