"Measure the impact of the 64-bit runtime on your app's memory usage."
앱의 메모리 사용에 미치는 64비트 런타임의 영향을 측정합니다.
64비트 런타임은 포인터의 크기 및 몇 가지 스칼라 데이터를 증가시키며, 앱을 위한 더 큰 메모리 청사진이 필요하게 되었습니다. 결과는 성능에 역효과를 일으킬 수 있는, 프로세서 캐시 및 가상 메모리에 증가된 압박입니다. 64비트 앱을 개발하는 경우 앱의 메모리 사용을 프로파일하고 최적화하는 것은 중요합니다.
앱의 64비트에 대응하도록 실행하기 위해 표준 테스트 생성을 하는 것부터 시작합니다. 이 테스트를 사용하면 32비트 버전과 비교해 64비트 버전의 컴파일에 대한 페널티를 측정할 수 있습니다. 또한, 앱의 메모리 사용을 최적화시켰을 때 개선된 수준을 측정할 수도 있습니다.
최소한 한 번의 테스트에서는 최소 청사진을 사용하시기 바랍니다(예를 들어 앱이 열리고 빈 문서를 보여주는 테스트). 다른 테스트에서 데이터 크기를 다양하게 사용해보시길 바라며, 적어도 한 번의 테스트는 거대한 데이터 집합으로 테스트해보시길 바랍니다. 복잡한 앱은 앱의 기능에 각각에 대해 하위집합까지 포괄하면서, 여러 테스트 데이터 집합을 요구하게 될 것입니다.
이러한 테스트의 목적은 타입 혹은 데이터의 양이 바뀔 때 메모리 사용량이 어떻게 되는지를 측정하기 위함입니다. 특정 데이터 종류가 기존 32비트 버전에 비해 64비트 버전에서 지나치게 많은 메모리를 사용하게 되는 경우가 개선을 찾을 수 있는 위치입니다.
대부분의 앱은 가상 메모리 페이지의 크기를 알 필요가 없지만, 몇 가지는 버퍼 할당 및 프레임워크 호출을 위해 사용합니다.페이지 크기는 기기에 따라 다를 것이기 때문에 페이지의 크기를 가져오려면 getpagesize()
함수를 사용해야 합니다.
64비트 런타임 환경은 position-independent executables(PIE)만을 지원합니다. 기본값으로 대부분의 앱이 위치 독립적입니다. 정적으로 라이브러리 혹은 어셈블리 코드와 연결되는 것과 같은 몇 가지 요인이 PIE로써 앱을 빌드하는 것을 막는다면, 64비트 런타임에 앱을 포팅할 때 코드를 업데이트해야 합니다.
64비트 아키텍처에서 수리적 연산 작업의 정확성을 확실하도록 합니다.
https://developer.apple.com/documentation/uikit/app_and_environment/updating_your_app_from_32-bit_to_64-bit_architecture/verifying_mathematical_calculations
https://velog.io/@panther222128/Verifying-Mathematical-Calculations