이미 소장하고 있다면 판매해 보세요.
|
Chapter 01 자바 코드 최적화
___ 안드로이드 코드 실행 ___ 피보나치 최적화 ______ 재귀 호출 방법을 순환 호출 방법으로 변경 ______ BigInteger ___ 캐시 결과 ______ android.util.LruCache「K, V」 ___ API 레벨 ______ 단편화 ___ 데이터 구조 ___ 응답성 ______ 지연 초기화 ______ StrictMode ___ SQLite ______ SQLite 명령문 ______ 트랜잭션 ______ 쿼리 ___ 요약 Chapter 02 NDK 시작하기 ___ NDK의 구성요소 ___ 자바와 C/C++ 코드 혼용 ______ 네이티브 메서드 선언 ______ JNI 레이어 글루 구현 ______ Makefile 생성 ______ 네이티브 함수 구현 ______ 네이티브 라이브러리 컴파일 ______ 네이티브 라이브러리 로드 ___ Application.mk ______ 모든 디바이스를 위한 최적화 ______ 모든 디바이스 지원 ___ Android.mk ___ C/C++를 사용한 성능 향상 ______ JNI에 대해서 ___ 네이티브 액티비티 ______ 설정하지 않은 라이브러리 빌드 ______ 또 다른 방법 ___ 요약 Chapter 03 NDK 고급 ___ 어셈블리 ______ 최대 공약수 ______ 컬러 변환 ______ 병렬 연산을 이용한 평균값의 계산 ______ ARM 명령어 ______ ARM NEON ______ CPU 기능 ___ C 익스텐션 ______ 빌트인 함수 ______ 벡터 명령어 ___ 팁 ______ 인라인 함수 ______ 언롤링 루프 ______ 메모리 프리로딩 ______ LDR/STD 대신 LDM/STM의 사용 ___ 요약 Chapter 04 효율적인 메모리 사용 ___ 메모리에 대한 사전적 정의 ___ 데이터 타입 ______ 값의 비교 ______ 다른 알고리즘 ______ 배열의 정렬 ______ 개발자가 직접 정의한 클래스 ___ 메모리 액세스 ______ 캐시의 라인 크기 ___ 데이터 배치 ___ 가비지 컬렉션 ______ 메모리 누수 ______ 참조 ___ API ___ 로우 메모리 ___ 요약 Chapter 05 멀티스레딩과 동기화 ___ 스레드 ___ AsyncTask ___ 핸들러와 루퍼 ______ 핸들러 ______ 루퍼 ___ 데이터 타입 ______ 동기화, 휘발성, 메모리 모델 ___ 동시성 ___ 멀티코어 ______ 멀티코어용 알고리즘의 수정 ______ 동시성 캐시 사용 ___ 액티비티 라이프사이클 ______ 정보 전달 ______ 상태 기억하기 ___ 요약 Chapter 06 벤치마크와 프로파일링 ___ 시간 측정 ______ System.nanoTime( ) ______ Debug.threadCpuTimeNanos( ) ___ 트레이싱 ______ Debug.startMethodTracing( ) ______ Traceview 사용 ______ DDMS에서 Traceview의 사용 ______ 네이티브 트레이싱 ___ 로그 ___ 요약 Chapter 07 배터리 최대한 사용하기 ___ 배터리 ______ 배터리 사용량 측정 ___ 브로드캐스트 리시버 비활성화 ______ 브로드캐스트 리시버의 활성화/비활성화 ___ 네트워킹 ______ 백그라운드 데이터 ______ 데이터 전송 ___ 위치 ______ 리스너 등록 해제 ______ 업데이트 주기 ______ 다중 프로바이더 ______ 프로바이더 필터링 ______ 마지막으로 알려진 위치 ___ 센서 ___ 그래픽 ___ 알람 ______ 알람 스케줄링 ___ wakelock ______ 문제 예방 ___ 요약 Chapter 08 그래픽 ___ 레이아웃 최적화 ______ 상대 레이아웃 ______ 레이아웃 병합 ______ 레이아웃 재사용 ______ 뷰스텁 ___ 레이아웃 툴 ______ Hierarchy Viewer ______ layoutopt ___ OpenGL ES ______ 익스텐션 ______ 텍스처 압축 ______ 밉맵 ______ 다중 APK ______ 셰이더 ______ 장면 복잡도 ______ 컬링 ______ 렌더링 모드 ______ 전력 소모 ___ 요약 Chapter 09 렌더스크립트 ___ 개요 ______ Hello World ___ Hello Rendering ______ 렌더링 스크립트의 생성 ______ RenderScriptGL 컨텍스트의 생성 ______ RSSurfaceView의 확장 ______ 컨텐트 뷰의 설정 ___ 스크립트에 변수 추가 ___ HelloCompute ______ 할당 ______ rsForEach ______ 성능 ___ 네이티브 렌더스크립트 API ______ rs_types.rsh ______ rs_core.rsh ______ rs_cl.rsh ______ rs_math.rsh ______ rs_graphics.rsh ______ rs_time.rsh ______ rs_atomic.rsh ___ 렌더스크립트와 NDK ___ 요약 |
|
이 책은 안드로이드 애플리케이션 개발 경험이 있는 독자를 대상으로 하며, 독자들이 개발하는 애플리케이션을 어떻게 하면 더 빠르고 안정 동작하게 할 수 있을까 하는 부분에 대해 중점을 뒀다.
1장 자바 코드 최적화 자바 코드 최적화에 대해서 다룬다. 첫 번째 애플리케이션은 자바에 대해 초점을 맞춰서 구현하는 방법보다는 알고리즘 자체에 대해서 다룬다. 또한, 여러분이 개발한 애플리케이션을 최적화하기 위해 캐시를 사용하거나 메모리 할당을 최소화하는 등의 간단한 기법을 통해 어떻게 전체 애플리케이션의 성능을 향상시키는지도 알아본다. 더불어, 여러분이 개발한 애플리케이션의 성능이 어느 정도 되는지 알려주는 일종의 정량화된 가이드인 사용자 반응성을 유지하는 방법과 데이터베이스를 효율적으로 활용하는 방법에 대해서도 소개한다. 2장 NDK 시작하기 2장에서는 한 단계 더 나아가서(조금 로우 레벨이기는 하지만 여러분이 어떤 개발을 하느냐에 따라 로우 레벨이 아닐 수도 있다) 안드로이드 NDK에 대해 소개한다. 안드로이드 2.2부터 자바 코드가 네이티브 코드로 컴파일되긴 하지만, 어떤 부분은 C 코드를 사용하여 개발하는 것이 훨씬 나은 성능을 가져올 때가 있다. NDK는 기존 코드를 자바로 전부 다시 작성할 필요 없이 안드로이드에서 동작할 수 있도록 해준다. 3장 NDK 고급 어셈블리 언어에 대해 조금 깊이 다루고 있다. 일반적인 애플리케이션이 개발자라면 사용할 일은 거의 없겠지만, 어셈블리 언어는 플랫폼에 대해 특정 명령어들을 사용할 수 있으며 이러한 방법은 애플리케이션 최적화를 위해서는 최적의 방법이다. 하지만, 상대적으로 어셈블리 언어를 사용해서 소스 코드를 개발하기가 어렵고 소스 코드의 유지 보수 측면에서도 비용이 많이 든다. 어셈블리 코드가 애플리케이션 개발의 특정 부분에 대해서 국한되어 사용되기는 하지만, 어셈블리를 사용한 결과 자체는 상당히 놀라울 정도이며 주의해서 사용하기만 하면 최적화 측면에서는 충분히 고려해볼 만한 방법이다. 4장 효율적인 메모리 사용 어떻게 하면 메모리 사용량을 줄이면서 성능을 향상시키는지를 다룬다. 또한, 소스 코드에서 메모리를 되도록 덜 사용하는 간단한 방법을 소개하고, CPU가 어떻게 설계되어 있는가에 따라 메모리 할당과 메모리 액세스가 성능에 직접적인 영향을 어떻게 미치고 있는지 알아본다. 5장 멀티스레딩과 동기화 애플리케이션의 반응 속도와 성능을 향상시키기 위해서 안드로이드 디바이스에서 동시에 여러 개의 스레드를 동작시킬 수 있는 범위 내에서 최대한 멀티스레드를 사용하는 방법에 대해 알려준다. 6장 벤치마크와 프로파일링 애플리케이션의 성능을 측정하는 기본적인 방법에 대해 알려준다. API를 사용하여 어떻게 시간을 측정하고, 안드로이드에서 제공하는 툴을 사용하여 애플리케이션이 소비한 시간을 좀 더 보기 좋게 보여주도록 하기 위한 방법을 살펴본다. 7장 배터리 최대한 사용하기 애플리케이션이 정상적으로 전력을 소비하고 있는지 체크하는 방법에 대해 알려준다. 많은 안드로이드 디바이스들이 배터리를 사용하고 있으며, 배터리를 상대적으로 빨리 소모하는 애플리케이션일수록 사용자가 쉽게 삭제한다는 점에서는 전력을 되도록 덜 소모하도록 하는 것은 상당히 중요한 문제이다. 이 장에서는 어떻게 하면 애플리케이션의 중요 기능을 유지하면서 전력 소모를 최소화할 수 있는가에 대한 노하우를 소개한다. 8장 그래픽 애플리케이션의 레이아웃과 OpenGL 렌더링을 최적화하는 기본적인 방법을 소개한다. 9장 렌더스크립트 렌더스크립트은 허니컴에서 소개된 최신 기술이다. 렌더스크립트 자체가 성능을 최적화시키는 기술이며 등장한 지 얼마 되지 않았음에도 상당히 빠르게 발전하고 있다. 이 장에서는 애플리케이션에서 렌더스크립트를 사용하는 방법을 소개하며 렌더스크랩트에서 정의하는 여러 가지 API들을 알아본다. |