본문 바로가기

Android

안드로이드 캐쉬 (SparseArray)

자바에 익숙한 개발자라면, 해쉬맵을 캐시로 사용하고, 나름의 효과를 볼 수 있다.


하지만 안드로이드에서는 SparseArray라는 클래스가 있어서 키가 Integer값일 때 해쉬맵보다 효율적으로 동작하도록 설계되어 있다.

해쉬맵은 키값의 타입을 java.lang.Integer로 할당하는 반면, SparseArray는 키값의 타입을 기본 자료형인 Integer로 가진다. 그래서 해쉬맵을 사용하게 되면 키값을 위해 너무 많은 Integer 객체가 생성되지만 SparseArray는 그런 객체 생성을 피할 수 있다.


안드로이드는 여러 타입의  sparse배열을 정의하고 있다.


SparseArray ( Integer를 object애 매핑 ), SparseBooleanArray ( Integer를 boolean에 매핑 ), SparseIntArray ( Integer를 integer에 매핑 )


SparseArray 대신 해쉬맵을 사용하면 약간 느릴 수는 있다.


하지만 프로그램 코드가 안드로이드에 종속되지 않는다는 장점이 있다.

즉, SparseArray가 없는 안드로이드 이외의 환경에서도 수정 없이 동일한 코드를 바로 사용할 수 있다.



- 안드로이드 앱 성능최적화 ( 프리렉, Herve Guihot지음, 작동대 옮김 )

출처 :  http://darrysea.tistory.com/55