일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- m4 pro
- intellij ide
- Logrus
- goland
- System Design
- 디자인패턴
- GoF 디자인패턴
- 윈도우키보드
- Kubernetes
- GoF
- 티스토리챌린지
- http 413
- gitops
- UnBuffered channel
- 오블완
- 사설 ip
- AWS
- notification system
- body size
- 대규모 시스템 설계
- go
- Infra
- 컴포지트패턴
- Buffered channel
- elasticsearch
- apollo router
- 배포 파이프라인
- Intellij
- golang
- 배포 프로세스
Archives
- Today
- Total
Fall in IT.
Android 성능 저하 요인 본문
반응형
오늘은 Android 개발 시 주의해야 할 사항에 대해서 알아보겠습니다.
요즘 모바일 장비들의 성능이 좋아지고 있지만, 성능에 대한 이슈는 아직도 여전합니다.
개발에 있어서 몇가지 주의사항을 정리해 보겠습니다.
안드로이드 성능과 관련된 자료는 구글에서 제공하는 개발자 사이트를 이용하면 됩니다.
http://developer.android.com/training/articles/perf-tips.html
개발자 사이트 중 몇가지만 설명해보겠습니다.
안드로이드 성능 저하 요인
- Avoid Creating Unnecessary Objects
- 필요없는 객체 생성은 피해야 한다.
- String 대신 StringBuffer를 사용한다.
- Integer 대신 int를 사용한다.
- 다차원 배열 대신 1차원 배열을 사용한다. - Prefer Static Over Virtual
- static을 적절히 사용한다. 만약 인스턴스 변수에 접근할 일이 없을 경우엔 static 메서드를 선언하여 호출하는 것이 훨씬 더 효율적이다. - Use Static Final For Constants
- 상수에는 static final을 사용한다.static으로 선언할때 저장되는 위치와 static final로 선언할때 저장되고 참조되는 위치가 다르다. static final의 접근속도가 더 빠르다. - Avoid Internal Getters/Setters
- 내부에서는 getter와 setter사용을 피해야 한다. - Use Enhanced For Loop Syntax
- for-each 루프를 사용해야 한다. 대부분의 Collection에서 제공하는 클래스들은 전통적인 for루프보다 for-each루프를 사용하는 것이 더 빠르다.
- 단, ArrayList는 전통적인 for 루프가 3배 더 빠르다고 한다. - Consider Package Instead of Private Access with Private Inner Classes
- private한 Inner 클래스의 private 접근을 피해야 한다. - Avoid Using Floating-Point
- 소수점 연산을 피해야 합니다. 안드로이드 기기에서는 정수 연산보다 소수점 연산이 2배 느리다.
- double이 float보다 2배의 저장 공간을 사용하므로, 가능하다면 float을 사용해야 하는 것이 효율적이다. - Know and Use the Libraries
- 라이브러리를 사용해야한다. 만든코드보다 API에서 제공하는 클래스와 메서드가 훨씬 더 효율적일 수 있다.
(예를들어, 배열을 복사할때는 for루프를 사용하는것보다 System.arraycopy() 메서드를 사용하는것이 9배 이상 빠르다고 한다.)
모두 즐거운 코딩 하세요~
반응형
'기타' 카테고리의 다른 글
소셜댓글서비스 Disqus - 웹사이트에 댓글기능 쉽게 붙이기 (0) | 2016.03.29 |
---|---|
Android 네이티브앱 / 웹앱 / 하이브리드앱의 개념 (2) | 2016.03.23 |
리눅스 서비스 등록 방법 (0) | 2016.03.07 |
리눅스(unix계열) 스크립트 ^M 지우는 방법 (0) | 2016.03.07 |
SCP를 사용한 서버간 파일 전송 및 수신 (0) | 2016.02.27 |
Comments