다른 쉘 사이에 스크립트의 실행 시간을 비교를 들어, 일부 SE의 대답은 사용하는 것이 좋습니다 bash
s의 ' 내장 time
명령과 같이 :
time bash -c 'foo.sh'
time dash -c 'foo.sh'
... 등 모든 쉘을 테스트합니다. 이러한 벤치 마크는 각 쉘이 자체 로드 및 초기화하는 데 걸리는 시간을 제거하지 못합니다 . 예를 들어, 위의 두 명령이 초기 플로피 디스크의 읽기 속도 (124KB / s) dash
( ~ 150K 실행 파일) 의 읽기 속도로 느린 장치 에 저장되었다고 가정하면 ( 쉘 은 ( ~ 1M ) 보다 약 7 배 빠릅니다. 로딩 시간은 숫자를 왜곡 할 수 있습니다. 쉘을로드 한 후 각 쉘 아래 의 실행 시간을 측정하는 것과 관련이없는 쉘의 사전 로딩 시간입니다 .bash
time
foo.sh
각 셸 내에서 실행할 수있는 스크립트 타이밍에 가장 적합한 휴대용 유틸리티는 무엇입니까 ? 위의 코드는 다음과 같습니다.
bash -c 'general_timer_util foo.sh'
dash -c 'general_timer_util foo.sh'
NB : 이식 가능한 명령이나 일반 명령이 없기 때문에 쉘 내장 time
명령이 없습니다.
유틸리티가 셸의 내부 명령 및 파이프 라인에서 소요되는 시간을 사용자가 스크립트로 먼저 랩핑하지 않고도 벤치마킹 할 수 있다면 더 좋습니다. 이와 같은 인공 구문이 도움이 될 것입니다.
general_timer_util "while read x ; do echo x ; done < foo"
일부 껍질 time
은 이것을 관리 할 수 있습니다. 예를 들어 bash -c "time while false ; do : ; done"
작동합니다. 시스템에서 작동하는 것과 작동하지 않는 것을 보려면 다음을 시도하십시오.
tail +2 /etc/shells |
while read s ; do
echo $s ; $s -c "time while false ; do : ; done" ; echo ----
done
/usr/bin/time
하시겠습니까?