일반 포팅 지침
32비트 애플리케이션을 64비트 Microsoft Windows로 포팅하는 것이 16비트 애플리케이션을 32비트 Windows로 포팅하는 것보다 더 쉬울 것입니다. 그러나, 이동은 몇 가지 신중한 계획으로 더 원활하게 갈 것입니다. 다음은 몇 가지 일반적인 지침입니다.
계획
포트에 필요한 작업의 크기를 결정합니다. 다음 항목을 식별하여 관련된 작업의 양을 측정합니다.
- 문제 32비트 코드. 64비트 컴파일러를 사용하여 32비트 코드를 컴파일하고 오류 및 경고의 정도를 검사합니다.
- 공유 구성 요소 또는 종속성. 애플리케이션의 구성 요소가 다른 팀에서 시작되는지와 해당 팀이 코드의 64비트 버전을 개발할 계획인지 여부를 결정합니다.
- 레거시 또는 어셈블리 코드입니다. 16비트 Windows 기반 애플리케이션은 64비트 Windows에서 실행되지 않으며 다시 작성해야 합니다. x86 어셈블리 코드는 WOW64에서 실행되는 동안 Intel Itanium 아키텍처의 속도를 활용하기 위해 이 코드를 다시 작성할 수 있습니다.
애플리케이션의 일부뿐만 아니라 전체 애플리케이션을 포트합니다.
애플리케이션 조각을 포츠하거나 /LARGEADDRESSAWARE:NO를 사용하여 코드를 2G로 제한할 수 있지만, 이 전략은 장기적인 고통을 위해 단기적인 이득을 거래합니다.
참고
/LARGEADDRESSAWARE:NO는 ARM64 이진 파일에 대해 무시됩니다.
이식되지 않는 기술에 대한 대체 항목을 찾습니다.
DAO(데이터 액세스 개체) 및 Jet Red 데이터베이스 엔진을 포함한 일부 기술은 64비트 Windows로 이식되지 않습니다.
64비트 버전을 별도의 제품 릴리스로 처리합니다.
64비트 제품이 32비트와 동일한 코드 베이스를 공유할 수 있지만 추가 테스트가 필요하며 다른 릴리스 고려 사항이 있을 수 있습니다.
개발
이제 규격 코드 개발을 시작합니다.
개발자는 32비트 제품 개발에 부정적인 영향을 주지 않고 최신 Windows 헤더 파일 및 새 데이터 형식을 사용하여 규격 코드 작성을 시작할 수 있습니다. 자세한 내용은 64비트 Windows 준비를 참조하세요.
32비트 및 64비트 Windows 모두에 대해 코드를 컴파일할 수 있는지 확인합니다.
새 데이터 모델은 수정 사항이 거의 없는 단일 코드 베이스에서 32비트 및 64비트 애플리케이션을 빌드할 수 있도록 설계되었습니다. SQL Server 및 Windows 개발 팀은 동일한 코드 베이스에서 32비트 및 64비트 버전의 제품을 개발하고 있습니다.
최상의 성능을 위해 컴파일러의 새로운 최적화 기능을 사용합니다.
Intel Itanium 프로세서에 대한 코드 최적화는 x86보다 더 중요합니다. 컴파일러는 이전에 마이크로프로세서에서 처리한 많은 최적화 함수를 가정합니다. 컴파일러의 두 가지 새로운 최적화 기능인 프로필 기반 최적화 및 전체 프로그램 최적화를 사용하여 64비트 애플리케이션의 성능을 최대화할 수 있습니다. 두 기능 모두 빌드 시간이 길어지고 좋은 테스트 시나리오를 조기에 개발해야 합니다.
프로필 기반 최적화 에는 2단계 컴파일 프로세스가 포함됩니다. 첫 번째 컴파일 중에 코드는 실행 동작을 캡처하도록 계측됩니다. 이 정보는 두 번째 컴파일 중에 모든 최적화 기능을 안내하는 데 사용됩니다.
전체 프로그램 최적화 는 단일 애플리케이션 파일뿐만 아니라 모든 애플리케이션 파일의 코드를 분석합니다. 이 접근 방식은 향상된 인라인화뿐만 아니라 향상된 부작용 분석 및 사용자 지정 호출 규칙을 포함하여 여러 가지 방법으로 성능을 향상합니다.
테스트
WOW64에서 실행되는 64비트 또는 32비트 코드를 테스트할지 여부를 결정합니다.
일부 애플리케이션에는 WOW64에서 실행되는 네이티브 64비트 코드와 32비트 코드가 모두 포함됩니다. 테스트 계획을 개발하는 동안 이를 자세히 조사하고 테스트 도구가 64비트, 32비트 또는 조합이어야 하는지 여부를 결정합니다. 64비트 Windows에서 애플리케이션의 64비트 및 32비트 버전을 모두 테스트해야 하는 경우가 많습니다.
자주 사용되는 32비트 구성 요소를 테스트합니다.
먼저 코드를 64비트로 다시 컴파일하고 테스트합니다. 둘째, 문제를 해결하고, 32비트에서 다시 컴파일한 다음, 테스트합니다. 셋째, 64비트로 다시 컴파일하고 테스트합니다.
COM 및 RPC 구성 요소를 테스트합니다.
32비트 및 64비트 COM 및 RPC 구성 요소가 모두 올바르게 통신하는지 확인합니다. 네트워크를 통해 16비트 구성 요소와의 통신을 테스트해야 할 수도 있습니다.
64비트 Windows에서 32비트 버전을 테스트합니다.
고객은 성능 및 메모리 문제가 주요 고려 사항이 아닌 64비트 Windows에서 32비트 애플리케이션을 계속 사용할 수 있습니다.
다른 메모리 구성을 테스트합니다.
서버에 대량의 메모리를 추가하면 애플리케이션이나 운영 체제에서 이전에 눈에 띄지 않았던 문제가 노출되는 경우가 있습니다.