파일 입력에서 "perf" 재사용

파일 입력에서 "perf" 재사용

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는 호출된 프로세스의 모든 하위 항목에 대한 카운터를 유지합니다. 셸 실행에서 몇 가지 예를 볼 수 있지만 이는 프로그램 실행에 비해 아마도 작은 오버헤드일 것입니다.

관련 정보