티스토리 뷰
개발자는 아무래도 성능이 좋고, 효율적인 프로그래밍을 하여야 한다.
특히나 모바일 환경에서는... 머 그냥 대충짜면 돈은 받기는 하지만. 쩝.
안드로이드 개발자 사이트에 있는 성능 개선 팁입니다.
자신의 프로그램이 성능이 좋길 바래서 공부하시는 분들은 웬만큼 다 아시는 부분들일것이라고 생각합니다.
자세한 사항은 아래의 링크로 가시면...
URL : http://developer.android.com/training/articles/perf-tips.html
1. Avoid Creating Unnecessary Objects (필요 없는 객체 생성은 피하자.)
- String대신 StringBuffer를 Integer대신 int를 사용하는 것 처럼 작은것 부터 신경써서 개발을 하게 된다면 객체가 적게생성되며 이에 따른 GC도 적게 발생한다.
2. Prefer Static Over Virtual (static을 적절히 사용하자.)
- 인스턴스 변수에 접근할 일이 없는 경우 static 메서드를 선언하여 호출 하는것이 15~20%의 성능을 개선할 수 있다.
3. Use Static Final For Constants (상수에 static final을 사용하자.)
- 변하지 않은 상수를 선언시 static final과 static로 선언할때 저장되고 참조되는 위치가 달라지며, static final이 접근 속도가 훨씬 빠르다.
4. Avoid Internal Getters/Setters (내부에서는 getter/setter를 피하라.)
- 인스턴스 변수에 직접 접근시 getter/setter를 사용하면 직접 전근하는것 보다 느려진다. JIT 컴파일러가 적용되지 않을경우 3배, 적용될경우 7배 정도 빨라진다.
5. Use Enhanced For Loop Syntax (개선된 루프를 사용해라.)
- for 루프를 사용하는것 보다 for-each 루프를 사용하는 것이 성능상 더 유리하다. 하지만, ArratList는 전통적인 for루프를 사용하는것이 3배 더 빠르다.
6. Consider Package Instead of Private Access with Private Inner Classes (private inner 클래스의 private 접근을 피하자.)
- 자바에서 inner class는 감싸고 있는 클래스의 private 변수를 접근 할수 있는 경우가 있다. 그런데 vm에서는 애부 클래스를 감싸고 있는 클래스는 다른 클래스로 인식 한다. 그래서 컴파일러는 감싸고 있는 클래스의 private 변수에 접근 할 수 있는 메서드를 자동으로 생성하게 된다. 따라서 변수에 직접 불가능하기때문에 getter/setter을 사용하는것 처럼 느려진다.
7. Avoid Using Floating-Point (소수점 연산은 피하자.)
- 안드로이드기기에서는 정수 연산보다 소수점 연산이 2배 느리다. 그리고, double이 float보다 2배의 저장 공간을 사용하다면 가능하면 float를 사용을 권한다.
8. Know and Use the Libraries (라이브러리를 알고 쓰자.)
- 자신이 만든 코드가 최적화 된것일수도 있으나, API에서 제공하는 클래스와 메서드가 훨씬 빠를 수 있다. 예를 들어 달빅에 내장되어 있는 String.indexOf()나 관련 API들이 있다. 마찬가지로 System.arraycopy() 메소드는 루프를 사용하는것 보다 9배 이상 빠르다.
9. Use Native Methods Carefully (Native 메서드는 유의해서 사용하자.)
- 네이티브 코드를 사용한다고 해서 반드시 효율적이지는 않다. 자바-네이티브 전환간에 발생하는 비용이나, 네이티브 코드의 최적화가 되지 않는 경우를 들 수 있다. 또한 실행 하고자하는 아키텍처에 대한 코드를 컴파일 해야한다.
'Mobile > Android' 카테고리의 다른 글
안드로이드 개발시 Java Version (0) | 2014.07.23 |
---|---|
ADB Connection Error (6) | 2014.07.22 |
[NDK] 이클립스를 이용한 build (0) | 2014.03.28 |
[Android]adb - Touch Event (0) | 2014.03.20 |
monkey test (0) | 2014.03.20 |
- Total
- Today
- Yesterday
- ubuntu
- ios
- CentOS
- rxswift
- Kotlin
- war
- nodejs
- golang
- centos8
- cocoapods
- Windows
- docker
- Xcode
- github
- go
- Linux
- windows10
- intellij
- Python
- Java
- Spring
- android
- git
- php
- tomcat
- enum
- Gradle
- MySQL
- Codable
- SWIFT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |