perf
프로그램 성능을 분석하는 데 사용할 수 있습니다.
prgrm
파일의 입력을 사용하여 프로그램의 성능을 테스트한다고 가정하면 다음을 실행할 수 있습니다.
perf stat prgrm < inp.dat
이제 실험을 여러 번 반복하려는 경우 이 옵션을 사용할 수 있습니다 --repeat
.
perf stat --repeat 50 prgrm < inp.dat
작동하지 않습니다. 이유를 이해합니다. 을 inp.dat
통해 "파이프"되고 perf
두 번째 실행에서 첫 번째 실행이 전체 파일을 "소비"했기 때문에 stdin에 대한 입력이 끝에 도달했습니다.
inp.dat
그런데 매번 처음부터 읽기를 시작하여 반복적으로 실험을 실행할 수 있습니까?
답변1
프로그램이 입력 파일 이름을 얻을 수 없는 경우 각 성능 통계 반복에서 셸을 사용할 수 있습니다. 나는 당신이 원하는 모든 것을 작은 쉘 스크립트에 넣을 것입니다.
테스트-prgrm.sh:
#!/bin/sh
prgrm < inp.data
그런 다음 다음을 실행하십시오.
perf stat --repeat 50 ./test-prgrm.sh
그러나 중간 쉘 스크립트 파일이 없더라도 sh -c를 사용하여 이를 수행할 수 있습니다.
perf stat --repeat 50 sh -c 'prgrm < inp.data'
기본적으로 perf는 호출된 프로세스의 모든 하위 항목에 대한 카운터를 유지합니다. 셸 실행에서 몇 가지 예를 볼 수 있지만 이는 프로그램 실행에 비해 아마도 작은 오버헤드일 것입니다.