요약하자면 가장 많이 나오는 내용이..
멤버 필드 접근이 빈번하지 않도록 지역 변수로 값을 복사해서 써라..
멤버 필드나 메서드에 final 키워드를 자주 쓰자. 지역 변수에는 성능상 이득이 없음
한 클래스 내에서의 getter/setter를 되도록 사용하지 말고 필드에 직접 접근하라
(객체 지향적 관점에서의 인터페이스로서는 묵과함)
결국 멤버 필드 및 중복 함수 호출로 인한 성능 저하를 피하자는 얘기
뭐 대충 이런 비용 차이..
함수를 통한 멤버 필드 접근 > 멤버 필드 접근 > 지역 변수
아래는 위 링크에 나와있는 대략적인 도표
행동 |
시간 |
지역 변수 더하기 |
1 |
멤버 변수 더하기 |
4 |
String.length() 호출 |
5 |
빈 정적 네이티브 메소드 호출 |
5 |
빈 정적 메소드 호출 |
12 |
빈 가상 메소드 호출 |
12.5 |
빈 인터페이스 메소드 호출 |
15 |
HashMap의 Iterator:next() 호출 |
165 |
HashMap의 put() 호출 |
600 |
XML로부터 1 View 객체화(Inflate) |
22,000 |
1 TextView를 담은 1 LinearLayout 객체화(Inflate) |
25,000 |
6개의 View 객체를 담은 1 LinearLayout 객체화(Inflate) |
100,000 |
6개의 TextView 객체를 담은 1 LinearLayout 객체화(Inflate) |
135,000 |
빈 activity 시작 |
3,000,000 |
잘 안쓰던 for-each 나 HashMap 등도 적극 활용해보아요
for-each의 경우 컴파일러가 인라인화 해주기도 한다니 참고!
'Android' 카테고리의 다른 글
Avoding memory leaks (0) | 2012.09.10 |
---|---|
onCreateDialog/onPrepareDialog (8) | 2012.09.06 |
큰 Bitmap 사용 시 주의점 (0) | 2012.08.31 |
AnimationDrawable 사용 시 주의점 (2) | 2012.08.24 |
System(0) 으로도 죽지 않는 app 종료 시키기 (0) | 2012.08.21 |