/OPT(최적화)
LINK가 빌드하는 동안 수행할 최적화를 제어합니다.
/OPT:{REF | NOREF}
/OPT:{ICF[=iterations] | NOICF}
인수
REF | NOREF
/OPT:REF를 사용하면 참조되지 않는 함수와 데이터가 제거되는 반면, /OPT:NOREF를 사용하면 참조되지 않는 함수와 데이터가 유지됩니다.기본적으로 LINK에서는 참조되지 않는 패키지 함수를 제거합니다./Gy 옵션을 사용하여 컴파일한 개체에는 패키지 함수(COMDAT)가 포함되어 있습니다.이러한 최적화를 전이적 COMDAT 제거라고 합니다.이 기본값을 무시하고 참조되지 않는 COMDAT를 프로그램에 유지하려면 /OPT:NOREF를 지정합니다./INCLUDE 옵션을 사용하면 특정 기호는 제거되지 않도록 할 수 있습니다.
/DEBUG를 지정한 경우 /OPT에는 기본적으로 NOREF가 지정되어 모든 함수가 이미지에 보존됩니다. 그렇지 않은 경우에는 기본적으로 REF가 지정됩니다.이 기본값을 무시하고 디버깅 빌드를 최적화하려면 /OPT:REF를 지정합니다./OPT:REF 옵션을 사용하면 증분 링크를 사용할 수 없습니다.
__declspec(selectany)를 사용하여 명시적으로 데이터를 COMDAT으로 표시해야 합니다.
/OPT:REF가 지정된 경우 기본적으로 /OPT:ICF가 설정됩니다./OPT:ICF를 설정하지 않고 /OPT:REF를 설정하려면 다음과 같이 지정해야 합니다.
link /opt:ref /opt:noicf
/OPT:ICF를 지정해도 /OPT:REF 옵션은 활성화되지 않습니다.
ICF[= iterations**] | NOICF**
동일한 COMDAT를 정리하려면 **/OPT:ICF[=iterations]**를 사용합니다.중복 COMDAT는 링커 출력에서 제거될 수 있습니다.iteration은 중복을 위해 기호를 트래버스하는 횟수를 지정합니다.기본 반복 횟수는 2입니다.추가 반복에서는 이전 반복의 정리를 통해 발견되지 않은 중복 COMDAT를 더 많이 찾을 수 있습니다./OPT:REF를 명시적으로 지정하여 기본적으로 ICF가 적용될 때와 /OPT:REF,ICF를 명시적으로 지정할 때의 링커 동작은 서로 다릅니다./OPT:REF를 지정하여 기본적으로 ICF가 적용되는 경우에는 읽기 전용 데이터를 정리하지 않습니다.여기에는 모든 .rdata, .pdata 및 .xdata가 포함됩니다.그러나 /OPT:REF를 지정하여 기본 ICF가 적용되는 경우 Itanium 및 x64용 이미지를 만들 때 정리되는 함수가 적어집니다. 이는 이들 모듈의 함수에 .pdata 및 .xdata 같은 읽기 전용 데이터에 대한 종속성이 더 많기 때문입니다.ICF를 완전하게 적용하려면 명시적으로 /OPT:ICF를 지정하십시오.
함수는 /Gy 컴파일러 옵션을 사용하여 COMDAT에 배치되며 상수 데이터는 COMDAT에 배치됩니다.정리할 데이터의 지정 방법 예제는 selectany를 참조하십시오.
ICF는 REF를 지정한 경우 기본적으로 적용되며 디버그 빌드에서 명시적으로 설정되어야 합니다.REF가 지정된 경우 NOICF를 지정할 수도 있습니다.
[!참고]
/OPT:ICF를 사용한 결과로 서로 다른 함수나 읽기 전용 데이터 멤버(/Gy로 컴파일된 const 변수)에 동일한 주소가 할당될 수도 있습니다.따라서 /OPT:ICF를 사용하면 함수나 읽기 전용 데이터 멤버의 주소가 서로 달라야 하는 프로그램이 제대로 실행되지 않을 수 있습니다.자세한 내용은 /Gy(함수 수준 링크 사용)를 참조하십시오.
설명
최적화하면 일반적으로 링크 시간이 늘어나는 대신 이미지 크기가 줄어들고 프로그램 속도는 향상됩니다.
/VERBOSE 옵션을 사용하면 /OPT:REF로 제거한 함수와 /OPT:ICF로 정리한 함수를 표시할 수 있습니다.
Visual Studio 개발 환경에서 이 링커 옵션을 설정하려면
프로젝트의 속성 페이지 대화 상자를 엽니다.자세한 내용은 Visual C++ 프로젝트 속성 설정을 참조하십시오.
링커 폴더를 클릭합니다.
최적화 속성 페이지를 클릭합니다.
다음 속성 중 하나를 수정합니다.
COMDAT 정리 사용
Windows98에 맞게 최적화
참조
프로그래밍 방식으로 이 링커 옵션을 설정하려면
- EnableCOMDATFolding 및 OptimizeReferences 속성을 참조하십시오.