g ++에서 프로필 기반 최적화를 사용하는 방법은 무엇입니까?
또한 누구든지 주제에 대한 좋은 자습서를 알려줄 수 있습니까? 아무것도 찾을 수 없습니다.
-fprofile-generate는 프로파일 링 코드로 애플리케이션을 계측합니다. 응용 프로그램은 실제로 실행되는 동안이 사용 패턴이 컴파일 타임에 알려진 경우 성능을 향상시킬 수있는 특정 이벤트를 기록합니다. 분기, 인라인 가능성 등은 모두 기록 할 수 있지만 GCC가이를 구현하는 방법에 대해 자세히 모르겠습니다.
프로그램이 종료되면이 모든 데이터를 * .gcda 파일로 덤프합니다.이 파일은 기본적으로 테스트 실행을위한 로그 데이터입니다. -fprofile-use 플래그로 애플리케이션을 다시 빌드 한 후 GCC는 최적화를 수행 할 때 * .gcda 로그 데이터를 고려하여 일반적으로 성능을 크게 향상시킵니다. 물론 이것은 많은 요인에 달려 있습니다.
에서 예 :
g++ -O3 -fprofile-generate [more params here, like -march=native ...] -o executable_name
// run my program's benchmarks, or something to stress its most common path
g++ -O3 -fprofile-use [more params here, like -march=native...] -o executable_name
기본적으로, 당신은 초기에 컴파일하고 모두 컴파일 및 링크이 추가 플래그 링크 : -fprofile-generate
(에서 여기 ).
그런 다음 실행하면 기본적으로 .o 파일 "다음"에 .gcda 파일이 생성됩니다 (빌드 된 전체 경로로 하드 코딩 됨).
-fprofile-dir = XXX 설정으로 이러한 .gcda 파일을 생성하는 위치를 선택적으로 변경할 수 있습니다 .
그런 다음 -fprofile-use
매개 변수를 사용하여 다시 컴파일하고 다시 연결 하고 프로파일 안내를 사용하여 컴파일합니다.
까다로운 부분은 makefile을 설정하는 것입니다.
객체 파일에 대해 별도의 출력 디렉토리가 필요합니다. 이름을 "프로필"과 "출시"로 지정하는 것이 좋습니다. GCC가 릴리스 빌드 단계에서 파일을 찾을 수 있도록 프로필 실행의 결과 인 * .gcda 파일을 복사해야 할 수 있습니다.
결과는 거의 확실히 더 빠를 것입니다. 아마 더 클 것입니다. -fprofile-use 옵션은 -O3에 의해서만 활성화되는 다른 많은 최적화 단계를 활성화합니다.
참고 URL : https://stackoverflow.com/questions/4365980/how-to-use-profile-guided-optimizations-in-g
'Program Tip' 카테고리의 다른 글
Emacs에 공백을 표시하려면 어떻게해야합니까? (0) | 2020.11.15 |
---|---|
Path.GetTempPath ()의 반환 값을 결정하는 것은 무엇입니까? (0) | 2020.11.15 |
Objective-C의 정방향 선언 열거 (0) | 2020.11.15 |
보이지 않는 문자열 값이있는 새 레코드를 데이터 프레임에 추가 할 때 보이지 않는 요인 수준으로 인해 경고가 발생하고 NA가 발생합니다. (0) | 2020.11.15 |
정규식의 복잡성은 무엇입니까? (0) | 2020.11.15 |