본문 바로가기

TechLog

WP SDK 7.1의 변경사항: 성능 개선

앞서 WP SDK 7.1의 변경사항: 에뮬레이터에서도 잠시 언급했지만, WP SDK 7.1은 내부적으로 변경된 부분이 많다. 성능 개선의 경우 MIX11에서 밝힌 부분은 다음과 같다:

  • 스크롤 및 터치 입력
  • 이미지 디코딩
  • 가비지 컬렉션
  • 메모리 최적화

 

스크롤 및 터치 입력, 이미지 디코딩의 성능 향상은 UI 모델의 변경과 관련이 있다. WP 7.5에서는 사용자의 터치 입력을 처리하는 별도의 스레드가 존재한다. 일단 다음 그림을 보자.

WP 7에서는 사용자의 입력을 UI Thread가 처리했었다. 때문에 WP 7에서는 UI Thread에서 화면과 관련된 로직을 처리하고 있는 동안 사용자의 입력이 발생하면, 화면 처리가 끝난 다음에야 사용자의 입력에 반응할 수 있었기 때문에 응답 속도가 느려지는 문제가 있었다. WP 7.5에서는 Touch Thread가 추가되면서 사용자의 입력에 대한 응답 속도가 개선되었다.

또한 이미지 파일의 내용을 디코딩하는 역할도 WP 7에서는 UI Thread가 맡고 있었는데, 이 부분의 로직도 별도의 스레드에서 처리하는 것으로 변경되었다. 덕분에 화면에 여러 개의 이미지가 있을 때 이미지 디코딩이 끝날 때까지 UI 처리가 지연되는 현상이 사라졌다.
(참고 : Off-thread decoding of images on Mango, how it impacts your application?)

가비지 컬렉션 성능은 객체가 생성된 시간에 따라서 수집 빈도를 조절하는 로직이 도입되어 성능이 개선되었으며, 이로 인해 메모리도 덜 사용하게 되었다. 그리고 앱을 실행할 때의 메모리 최적화 로직이 추가되었는데, 이에 대해서는 MIX11의 “Windows Phone Architecture: Deep Dive”에 그 내용이 일부 설명되어 있다. 간단히 설명하자면, WP 7에서는 Back stack, File cache, Periodic activity 작업에 사용되도록 고정되어 있는 메모리가 있어서 이 메모리가 전체 메모리 가용량을 떨어뜨리는 역할을 했는데, WP 7.5에서는 이 고정된 메모리 용량도 필요에 따라 사용할 수 있도록 개선되었다.