날짜별 글 목록: 2014년 1월 15일

Android 4.4 AsyncTask 개선점..

안드로이드에서 제일 많이 사용하는 쓰레드 형태가 AsyncTask를 상속하는 구조이고, AsyncTask의 개선은 바로 전체적인 성능개선으로 이어질 가능성이 높다.

AsyncTask의 최신(4.4 KitKat) 버전과 이전(4.3 Jelly Bean)을 비교해 보자.

위 그림에서 최신버전의 180, 181줄의 코드를 확인해 보면, 디바이스의 CPU의 개수에 따른 최적화가 눈에 띈다.

    private static final int CPU_COUNT = Runtime.getRuntime().availableProcessors();
    private static final int CORE_POOL_SIZE = CPU_COUNT + 1;

하지만, 기존의 코드에서는 아래의 코드로 하드코드되어 있어서 CPU가 2개인 디바이스에서는 오히려 성능을 저하시킬 수도 있다.

private static final int CORE_POOL_SIZE = 5;

위의 코드가 간단해 보일지 모르겠지만, 자바에서 Concurrent 쓰레드 프로그래밍에서는 매우 중요한 포인트이다. 이 작은 포인트가 디바이스에 최적화된 코드중의 일부라고 보면 되겠다.