아래의 예는 저를 놀라게했습니다. 수염 더 있다는 사실을 제외하고 ... 카운터 직관적 인 것 같다 사용자 시간 에 대한 echo | sed
콤보.
단독으로 실행될 때 시스템 시간echo
을 너무 많이 사용하는 이유는 무엇입니까? 또는 게임 상태를 어떻게 변경합니까? 두 경우 모두 동일한 에코 를 수행해야 할 것 같습니다 ... sed
echo
time echo -n a\ {1..1000000}\ c$'\n' >file
# real 0m9.481s
# user 0m5.304s
# sys 0m4.172s
time echo -n a\ {1..1000000}\ c$'\n' |sed s/^\ // >file
# real 0m5.955s
# user 0m5.488s
# sys 0m1.580s
1
내 직감은 버퍼링과 관련이 있습니다.
—
bahamat
@bahamat 당신이 옳다고 생각합니다. 에코는 각 인수에 대해 별도의 write ()를 수행합니다. sed는 그것들을 버퍼링합니다. 따라서 첫 번째 버전은 파일 시스템 드라이버를 통해 블록 장치 계층으로 들어가는 일반 파일에 백만 번 쓰고, 두 번째 버전은 파이프로 백만 번 쓰고 더 비싼 커널 코드 계층을 통한 쓰기는 줄어 듭니다.
—
Alan Curry
@bahamat 확실히 버퍼링.
—
StarNamer
time echo ... |cat >file
심지어 버전 time echo ... |perl -ne 'print'
과 비슷한 시간 sed
입니다.
좋은 설명을
—
해주신