C 프로그램의 마이크로벤치마킹에 어떤 도구를 사용해야 할지 잘 모르겠습니다.
나는 두 가지를 모두 측정하고 싶습니다.
- 메모리 사용량, RSS(상주 세트 크기)
- CPU 주기
나는 awk 스크립트를 사용 perf record -g
하고 perf script
파이프했습니다. 이는 메모리 사용량을 알아내는 데 도움이 되지만 CPU 주기 perf record
는 샘플링을 통해 얻어지기 때문에 CPU 주기가 정확하지 않습니다 . perf stat
정확하지만 분명히 각 기능에 대한 통계를 제공하지는 않습니다. perf_event 라이브러리는 매우 풍부한 문서를 갖고 있는 것으로 보이며 간단한 벤치마킹에는 어려운 작업입니다.
간단히 찾아보세요:
- 시스템 클릭
- DTrace
- LTTng
- 성능 도구
- 백합초
- 파푸이
이것은 잘 문서화되어 있는 훌륭한 도구인 것 같습니다.
가장 중점을 두는 것이 무엇입니까? 아니면 다른 제안이 있으신가요?
시간 내 주셔서 감사합니다.
답변1
자신만의 C 코드를 작성하고 있으므로 다음을 호출하면 됩니다.getrusage() 당신이 언급한 통계를 얻으세요. 관심 있는 벤치마크 코드 전후에 호출하세요.
시스템 호출에는 오버헤드가 있습니다. 단일 측정을 수행하기 위해 벤치마크 코드가 여러 번의 반복을 반복하도록 할 수 있습니다. 동일한 코드를 여러 번 실행하면 타이밍이 크게 변하는 경우 루프 카운터가 너무 낮게 설정된 것입니다.