장바구니 담기 close

장바구니에 상품을 담았습니다.

안드로이드 앱 성능 최적화

안드로이드 앱 성능 최적화

  • Herve Guihot
  • |
  • 프리렉
  • |
  • 2012-04-19 출간
  • |
  • 448페이지
  • |
  • 188 X 254 X 30 mm /834g
  • |
  • ISBN 9788965400196
판매가

32,000원

즉시할인가

28,800

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

수량
+ -
총주문금액
28,800

이 상품은 품절된 상품입니다

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평

이 책은 안드로이드 애플리케이션 개발 경험이 있는 독자를 대상으로 하며, 독자들이 개발하는 애플리케이션을 어떻게 하면 더 빠르고 안정적으로 동작하게 할 수 있을까 하는 부분에 대해 중점을 뒀다.

1장 자바 코드 최적화
자바 코드 최적화에 대해서 다룬다. 첫 번째 애플리케이션은 자바에 대해 초점을 맞춰서 구현하는 방법보다는 알고리즘 자체에 대해서 다룬다. 또한, 여러분이 개발한 애플리케이션을 최적화하기 위해 캐시를 사용하거나 메모리 할당을 최소화하는 등의 간단한 기법을 통해 어떻게 전체 애플리케이션의 성능을 향상시키는지도 알아본다. 더불어, 여러분이 개발한 애플리케이션의 성능이 어느 정도 되는지 알려주는 일종의 정량화된 가이드인 사용자 반응성을 유지하는 방법과 데이터베이스를 효율적으로 활용하는 방법에 대해서도 소개한다.

2장 NDK 시작하기
2장에서는 한 단계 더 나아가서(조금 로우 레벨이기는 하지만 여러분이 어떤 개발을 하느냐에 따라 로우 레벨이 아닐 수도 있다) 안드로이드 NDK에 대해 소개한다. 안드로이드 2.2부터 자바 코드가 네이티브 코드로 컴파일되긴 하지만, 어떤 부분은 C 코드를 사용하여 개발하는 것이 훨씬 나은 성능을 가져올 때가 있다. NDK는 기존 코드를 자바로 전부 다시 작성할 필요 없이 안드로이드에서 동작할 수 있도록 해준다.

3장 NDK 고급
어셈블리 언어에 대해 조금 깊이 다루고 있다. 일반적인 애플리케이션이 개발자라면 사용할 일은 거의 없겠지만, 어셈블리 언어는 플랫폼에 대해 특정 명령어들을 사용할 수 있으며 이러한 방법은 애플리케이션 최적화를 위해서는 최적의 방법이다. 하지만, 상대적으로 어셈블리 언어를 사용해서 소스 코드를 개발하기가 어렵고 소스 코드의 유지 보수 측면에서도 비용이 많이 든다. 어셈블리 코드가 애플리케이션 개발의 특정 부분에 대해서 국한되어 사용되기는 하지만, 어셈블리를 사용한 결과 자체는 상당히 놀라울 정도이며 주의해서 사용하기만 하면 최적화 측면에서는 충분히 고려해볼 만한 방법이다.

4장 효율적인 메모리 사용
어떻게 하면 메모리 사용량을 줄이면서 성능을 향상시키는지를 다룬다. 또한, 소스 코드에서 메모리를 되도록 덜 사용하는 간단한 방법을 소개하고, CPU가 어떻게 설계되어 있는가에 따라 메모리 할당과 메모리 액세스가 성능에 직접적인 영향을 어떻게 미치고 있는지 알아본다.

5장 멀티스레딩과 동기화
애플리케이션의 반응 속도와 성능을 향상시키기 위해서 안드로이드 디바이스에서 동시에 여러 개의 스레드를 동작시킬 수 있는 범위 내에서 최대한 멀티스레드를 사용하는 방법에 대해 알려준다.

6장 벤치마크와 프로파일링
애플리케이션의 성능을 측정하는 기본적인 방법에 대해 알려준다. API를 사용하여 어떻게 시간을 측정하고, 안드로이드에서 제공하는 툴을 사용하여 애플리케이션이 소비한 시간을 좀 더 보기 좋게 보여주도록 하기 위한 방법을 살펴본다.

7장 배터리 최대한 사용하기
애플리케이션이 정상적으로 전력을 소비하고 있는지 체크하는 방법에 대해 알려준다. 많은 안드로이드 디바이스들이 배터리를 사용하고 있으며, 배터리를 상대적으로 빨리 소모하는 애플리케이션일수록 사용자가 쉽게 삭제한다는 점에서는 전력을 되도록 덜 소모하도록 하는 것은 상당히 중요한 문제이다. 이 장에서는 어떻게 하면 애플리케이션의 중요 기능을 유지하면서 전력 소모를 최소화할 수 있는가에 대한 노하우를 소개한다.

8장 그래픽
애플리케이션의 레이아웃과 OpenGL 렌더링을 최적화하는 기본적인 방법을 소개한다.

9장 렌더스크립트
렌더스크립트은 허니컴에서 소개된 최신 기술이다. 렌더스크립트 자체가 성능을 최적화시키는 기술이며 등장한 지 얼마 되지 않았음에도 상당히 빠르게 발전하고 있다. 이 장에서는 애플리케이션에서 렌더스크립트를 사용하는 방법을 소개하며 렌더스크랩트에서 정의하는 여러 가지 API들을 알아본다.

목차

Chapter 01 자바 코드 최적화
___ 안드로이드 코드 실행
___ 피보나치 최적화
______ 재귀 호출 방법을 순환 호출 방법으로 변경
______ BigInteger
___ 캐시 결과
______ android.util.LruCache
___ 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
___ 요약

저자소개

저자 Herve Guihot는 20년 전에 암스트레드사의 CPC464로 컴퓨터를 배우기 시작했으며 현재 무선 통신과 디지털 멀티미미어 솔루션을 위한 팹리스 반도체 회사인 MediaTek에서 소프트웨어 엔지니어 매니저로 일하고 있다.

도서소개

『안드로이드 앱 성능 최적화』는 안드로이드 기반의 휴대용 디바아스에서 최적화에 대해 고민하는 이들에게 이에 대한 해결방안을 제시한 책이다. SDK부터 NDK까지, 멀티코어에서 GPU까지 매우 폭넓은 분야에 걸쳐 효율적인 애플리테이션을 개발할 수 있는 가이드를 제공하고 이를 실제 애플리케이션에 적용하여 설명하였다.

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.