두 프로그램의 실행 시간을 동시에 가져오기

두 프로그램의 실행 시간을 동시에 가져오기

나는 두 개의 서로 다른 프로그램에서 동시에 테스트를 실행할 수 있는 쉘 스크립트를 만들고 어떤 프로그램이 가장 효율적인지 확인하기 위해 실행 시간을 비교하려고 합니다(테스트는 이 스크립트로 자동화되어야 합니다).

기본적으로 쉘 스크립트를 포크하고 두 프로그램을 동시에 실행하여 실행 시간을 확인하고 차이를 계산할 수 있는 방법이 있는지 알고 싶습니다.

답변1

@ulrichschwarz가 맞습니다. 성능 테스트는 두 프로세스를 병렬로 실행해서는 안 됩니다.

----

time쉘 키워드 which를 사용할 수 있습니다 .

내 데비안 상자에는 경로에 더 많은 옵션이 있는 바이너리도 있습니다. 이 경우 \time바이너리 버전을 사용하여 실행해야 합니다.

분명하지 않다십자가. 내 말은, 명령줄이나 스크립트에서 프로그램이 시작되면 쉘이 모든 작업을 수행한다는 뜻입니다.

&명령줄 끝에 추가하면 셸은 백그라운드에서 프로그램을 시작합니다.sleep 6 &

백그라운드에서 2개의 프로그램을 시작하면 동시에 실행됩니다.

wait쉘이 내장되어 있습니다. 인수 없이 사용하면 현재 프로세스는 현재 활성 하위 프로세스(백그라운드)가 종료될 때까지 대기하면서 일시 중지됩니다.

이 시도:

realtime1=$(mktemp)
realtime2=$(mktemp)
\time -o "${realtime1}" -f "%e" sleep 5 &
\time -o "${realtime2}" -f "%e" sleep 10 &
wait
printf "Number of seconds used by program1: %s\n" $(cat "${realtime1}")
printf "Number of seconds used by program2: %s\n" $(cat "${realtime2}")

시험을 치르다:

$ bash script.sh
Number of seconds used by program1: 5.00
Number of seconds used by program2: 10.00

관련 정보