2020년 7월 1일 수요일

Visual Studio LTCG 적용법

제대로 이해한 것 같진 않은데 대충 흐름만 정리한다.

기록을 해두면, 언젠가 이해해서 이 글을 수정할 수 있지 않을까 기대한다.

위 데이터 기술 동향에서 GL 및 LTCG 부분을 보자.

컴파일하고 링크할 때 프로그램을 시험적으로 돌려보고 그 결과인 데이터를 가지고 코드를 최적화 하는 것이 그 핵심이다. 그 효과는 우수하니까 저렇게 글도 적히는 것이겠지. 그래서 그것을 적용시켜보자.

여기서 GL 설정을 하자.


static lib 의 경우


dll 경우

LTCG (Link Time Code Generation) 은 정적 라이브러리인지 동적 라이브러리인지에 따라서 맨위의 것 하나와 아래 2개 중 택 1로 설정을 하게 된다.

그런데 LTCG 를 사용하면 PDB 파일이 필요없다.

PDB 파일은 디버깅 할 때 사용하는 매핑 파일이다.

breakpoint 등을 처리할 때 exe 내의 binaray code 와 원본 c++ 코드를 매핑할 때 등에 쓰인다.

LTCG 를 사용하면 PDB 파일로 나와야 할 것이 컴파일 결과인 lib 나 dll 파일 내에 들어간다.

그래서 필요없다.

이를 위해선 다음 옵션을 바꿔야한다.

PDB 를 사용안하면 ZI 로 하면 안된다. 이건 위의 MS 문서에 명시적으로 적혀져 있다.

마지막으로 아래 옵션을 MD 계열로 바꿔야한다.

그 이유는 뇌피셜인데, 최적화 과정이 프로그램을 실행하면서 나온 데이터를 가지고 하는 것이기 때문에, 각 lib, dll 에 Heap 이 있어야하기 때문이 아닐까한다.

만약 안바꾸면 에러뜨고 바꾸라고 빨간 글씨가 나올 것이다.

마지막으로 Incremental Linking 을 false 로 처리해야한다.

안해도 되는데 warning 뜬다.

이는 정적 라이브러리에선 관계 없는 이야기.

댓글 없음:

댓글 쓰기

List