2011-11-13 5 views
1

동적 라이브러리로 컴파일되는 여러 개의 큰 코드베이스가 있습니다. 나는 이들 중 일부는 매우 비싼 동적 글로벌 동적 이니셜 라이저를 가지고 있음을 알고 있습니다. (즉, 구축하는 데 매우 비싼 클래스/구조체의 전역 인스턴스입니다.)라이브러리에서 모든 동적 초기화 찾기

이러한 동적 이니셜 라이저가 코드에 포함되어있는 곳의 목록을보고 싶습니다. 그래서 값 비싼 지 확인할 수 있습니다. 리팩토링해야합니다. 이 라이브러리 중 일부는 꽤 크고 동적 초기화 프로그램이 수백 개 포함되어 있기 때문에 많은 어셈블리를 파기하지 않아야합니다. (대다수는 문자열 작성과 같이 작고 저렴합니다.)

나를 도울 수있는 도구가 있습니까? (내 도구 체인은 Redhat Linux/gcc/cmake입니다.)

답변

2

코드 실행을 valgrind의 callgrind 도구 아래에서 실행하는 것은 어떻습니까? 실행을 프로파일 링합니다 (나는 비싼 값을 말하면 CPU가 아니라 I/영형). 걱정되는 많은 것들을로드하고 프로필을 분석하는 것 외에는 아무것도하지 않는 작은 테스트 프로그램을 작성하십시오 (예 : callgrind 출력 파일의 그래픽 도구 kcachegrind 사용).

관련 문제