메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

자바 퍼포먼스 튜닝

자바 퍼포먼스 튜닝

한빛미디어

번역서

절판

  • 저자 : 잭 시라지
  • 번역 : 홍상욱
  • 출간 : 2001-07-18
  • 페이지 : 480 쪽
  • ISBN : 8979141319
  • 물류코드 :1131
  • 초급 초중급 중급 중고급 고급
5점 (2명)
좋아요 : 10

디버깅은 쉽게, 속도는 빠르게! 

자바가 처음 등장했을 때부터 성능은 자바 개발자에게 최대 관심사였다. 최근에는 초창기보다 많이 개선되었지만, 여전히 성능은 좋은 프로그램을 만들기 위한 본질적인 문제로 남아 있다. 튜닝은 좋은 디자인과 프로그래밍 기법을 따르고, 병목현상을 피해 자바를 충분히 빠른 속도로 수행하도록 하는 것이므로, 최상의 결과를 내기 위해서는 반드시 필요하다. 

이 책에서는 포괄적이면서 꼭 필요한 튜닝 기법을 제시하여 성능 문제를 해결할 수 있도록 하고 있다. 즉, 예제에서 실용적인 튜닝 기법을 보여주고 있다는 것이 큰 특징이다. 세부적으로는 객체 생성을 줄여야 한다든지, 스트링을 배열로 바꾼다든지, 그 외 코드를 최적화할 수 있는 기법을 알려준다.

또한 이 책은 어떤 부분을 최적화하고, 어떤 부분을 하지 말아야 할 것인지에 관해 다양한 조언을 한다. 능률적이고 효과적으로 일하는 방법을 제시하여 코드가 좀더 견고하고, 관리하기 쉽고, 빠른 속도를 낼 수 있도록 한다.

주요 내용

  • 최적화 전략을 고려한다.
  • 프로그램의 성격을 분석 도구를 사용해서 분석한다.
  • 프로그램에서 생성되는 객체의 개수를 최소화한다.
  • 스트링 사용을 최적화한다.
  • 비효율적인 코드에서 오는 성능 저하를 피한다.
  • 루프와 스위치를 최적화한다.
  • I/O를 최적화한다.
  • 정렬 및 일반적인 작업에서 적당한 알고리즘을 사용한다.
  • 스레드를 효과적으로 사용한다.
  • 분산 시스템의 성능을 최적화한다.
잭 시라지 저자

잭 시라지

독립 컨설턴트. 초창기부터 자바를 사용했고, 주로 금융산업 분야를 상대로 자바 성능에 중점을 둔 상담을 하고 있다. 자바를 다루기 전에는 스몰토크 애플리케이션을 최적화하는 작업을 하였다.
홍상욱 역자

홍상욱

서강대학교 컴퓨터학과를 졸업한 후 미국 존스 홉킨스 대학교에서 컴퓨터학 석사과정을 밟고 있다. 자연어 처리, 인공지능, 프로그래밍 언어 등에 관심이 많다. 컴퓨터 분야 외에 영어, 라틴어, 불어, 스페인어 등 다양한 언어를 공부해 왔다. 언어, 번역, 컴퓨터에 대한 관심을 바탕으로 한영/영한 자동 번역을 연구하고 있다.


역자서문
차례
서문

1장. 서론

왜 느린가?
최적화란 게임
시스템의 한계와 최적화할 부분
최적화 방책
감지하는 성능
최적화의 시작
측정 단위는?
필요한 부분만 최적화
성능 확인표

2장. 분석 도구
측정과 시간
가비지 컬렉션
메소드 호출
객체 생성 분석
메모리 사용량 감시
클라이언트/서버 통신
성능 확인표

3장. JDK 개선점
가비지 컬렉션
JDK 클래스 대치 
더 빠른 가상 머신
최적화를 더 잘하는 컴파일러
썬의 최적화 컴파일러와 최적화한 수행 환경
기계어로 컴파일
네이티브 메소드 호출
무압축 ZIP/JAR 파일
성능 확인표

4장. 객체 생성
객체 생성의 통계수치
객체 재사용
가비지 컬렉션 피하기
초기화
미리 초기화와 추후 초기화
성능 확인표

5장. 스트링
스트링의 성능 효과
컴파일시, 실행시 스트링 값 부여 비교
스트링으로 변환
스트링과 문자열
스트링 비교와 검색
국제화한 스트링 정렬
성능 확인표

6장. 예외 처리, 캐스팅, 변수
예외처리
캐스팅
변수
메소드 매개변수
성능 확인표

7장. 루프와 스위치
Java.io.Reader 변환기
예외로 종료되는 루프
스위치
재귀
재귀와 스택
성능 확인표

8장. I/O, 로깅, 콘솔 출력
System.out 대치 
로깅
I/O를 더 빠르게 
직렬화
객체 클러스터링과 I/O 회수 계산
압축
성능 확인표

9장. 정렬
불필요한 정렬 오버헤드 피하기
효율적인 정렬 프레임워크
O(nlogn)보다 더 나은 정렬
성능 확인표

10장. 스레딩
사용자 인터페이스 스레드와 기타 스레드
레이스 컨디션
데드락
동기화 오버헤드
멀티스레드 실험 시간 측정
아토믹 액세스와 값 부여
스레드 풀
로드 조절
스레드를 이용한 문제 해결법
성능 확인표

11장. 적합한 데이터 구조체와 알고리즘
컬렉션
자바 2 컬렉션
해시 테이블과 해시맵
캐시의 이용
캐싱 예제 I
캐싱 예제 II
부분적으로 동일한 스트링에서 인덱스 찾기
서치 트리
성능 확인표

12장. 분산 컴퓨팅
도구
메시지 감소
통신층 비교
캐시의 이용
일괄 처리 I
애플리케이션 분할
일괄 처리 II
저레벨 통신 최적화
분산 가비지 컬렉션
데이터베이스
성능 확인표

13장. 최적화할 시기는?
최적화하면 안될 때
최적화 클래스 라이브러리와 빈
분석
디자인과 구성
배포 후 최적화
성능에 영향을 미치는 기타 요인
성능 확인표

14장. 운영체제와 네트워크 성능 향상
하드 디스크
CPU
RAM
네트워크 I/O
성능 확인표

15장. 추가 자료
서적
잡지
URL
분석기
최적기

찾아보기

아무 생각 없이 짠 코드가 얼마나 프로그램의 성능을 저하시키는지 일깨워준 책이었습니다.

앞으로는 버그 없는 프로그램 뿐만이 아닌 성능 좋은 프로그램 개발에도 관심을 가져야쥐~~~

JAVA 개발자로서 중급 이상의 실력을 갖추고자 노력하는 엔지니어라면 꼭 참고해보아야 할 내용을 갖추고 있다.



모든 소프트웨어 개발에는 일정하게 따라야 할 순서가 있다. 일반적인 관점으로 이 순서를 정리해 보면 설계, 코드 개발, 테스트, 디버깅, 최적화, 배포 및 지원이라고 볼 수 있겠다. 실력 있는 개발자로 인정을 받고자 한다면 이 모든 과정에 대하여 어느 정도의 개념을 갖추고 있고 각 과정에 알맞은 작업을 수행할 수 있도록 노력해야 할 것이다.



현재 자바 언어는 현재 엔터프라이즈 환경에서 가장 각광 받는 개발 언어이고 또한, JAVA2 ME을 발표하여 임베디드 시스템에서도 주목 받는 솔루션으로 자리잡고 있다. 인터넷이나 엔터프라이즈 환경의 프로그램들은 동시에 접근하는 다수의 사용자에 의해 상당한 로드가 집중되어 최적화된 성능의 코드 작성이 매우 중요하다. 또한 임베디드 시스템의 경우, 역시 한정된 시스템 자원을 최대한 이용하기 위해 개발자의 코드 최적화 노력이 많이 요구되는 개발 분야이다. 대부분의 개발자들은 여러 개발 경험과 컴퓨터 공학에 근거한 지식을 통하여 자신만의 최적화 노하우를 가지고 있다. 하지만 정리되지 않은 머리 속의 지식들은 반드시 필요한 순간에 끌어 내어 적용하는 것은 쉬운 일이 아니며, 최적화를 적용해야 할 순간이 오기 전에 문제를 미리 파악하여 설계한다는 것은 쉬운 일이 아니다. 이 책은 개발자들이 위와 같은 어려움을 극복할 수 있도록 프로그램 개발 최적화 단계 및 설계 단계에서 반드시 참고해야 할 주요 가이드 라인을 제공하고 있다.



이 책은 자바 개발자를 대상으로 하여 필자의 경험을 토대로 프로그램의 성능을 향상시키기 위해 필요한 주요 최적화 방법과 여러 자료를 체계적으로 정리, 제공하고 있다. 단순한 자바 코드 작성만을 목표로 삼고 있는 개발자가 아니라면 꼭 한번 살펴보아야 할 것이다. 책의 수준으로 볼 때 자바 초보자를 대상으로 삼지는 않으며 기본적인 자바 언어에 대한 지식은 갖추고 있어야 할 것이다. 현재 자바의 기본을 파악한 개발자나 중급 정도의 실력을 갖추고 있는 개발자라면 일독을 권한다. 책의 내용을 간단히 살펴보기 위해 우선 전체적인 목차를 살펴보도록 하자.



   1. 소개

   2. 분석도구

   3. JDK 개선점

   4. 객체 생성

   5. 스트링

   6. 예외 처리, 캐스팅, 변수

   7. 루프와 스위치

   8. I/O, 로깅, 콘솔 출력

   9. 정렬

   10. 스레딩

   11. 적합한 데이터 구조체와 알고리즘

   12. 분산 컴퓨팅

   13. 최적화할 시기는?

   14. 운영체제와 네트워크 성능 향상

   15. 추가 자료



소개 부분에서는 최적화에 대한 주요 개념과 전체적인 수행 방법을 설명하고 있다. 아직 최적화 과정을 실제로 적용해보지 않은 개발자라면 이 장은 매우 가치 있는 자료를 제공하고 있다. 물론, 최적화 과정을 경험해본 개발자라도 문서로 정리된 최적화에 대한 적용 방법을 살펴본다는 것은 매우 가치 있는 경험일 것이다.



"2장. 분석도구’에서는 최적화의 실제 결과를 확인하기 위하여 자바 개발자들이 사용할 수 있는 측정 방법을 여러 측면에서 제안하고 있다. 물론, 필자가 책에 서술한 듯이 유료로 구입할 수 있는 측정 프로그램을 사용하는 것이 가장 효율이 좋겠지만 기본적으로 갖추고 있는 환경에서 측정할 수 있는 방안을 소개한다.



‘3장. JDK 개선점’에서는 여러 가상머신 간에 있을 수 있는 성능상의 차이점을 설명하고 자바 컴파일러가 수행하는 코드 최적화 기법에 대하여 설명하고 있다. 자바에서 객체 생성과 소멸은 성능에 많은 영향을 미친다.



4장은 이러한 자바 객체 생성의 성능 저하 문제를 해결하기 위한 여러 가지 방안을 제공한다. 프로그램 개발 중에 가장 많이 다루는 데이터는 문자열로, 5장은 자바에서의 문자열 처리시 발생할 수 있는 성능 문제와 스트링 클래스의 성능 문제를 다루고 있다. 자바에서 예외 상항 처리는 성능을 많이 저하시키는 요소이다. 또한, 서로 다른 데이터형간에 변환하는 캐스팅 역시 성능 저하의 주요 요소이다.



6장에서는 이러한 예외 처리, 캐스팅 문제와 여러 변수 타입 중에 어떠한 변수 타입이 가장 성능에 좋은지를 살펴본다. 프로그램의 성능을 결정하는 가장 중요한 코드 요소는 루프이다. 반복적인 동작이 계속적으로 이루어지기 때문에 루프에서 성능이 떨어지는 코드를 사용하면 그 부분이 병목점이 될 가능성이 크다.



7장에서는 이러한 루프에서의 성능 향상 방법과 스위치 및 재귀 함수의 성능 문제도 살펴 본다. 8장은 일반적인 프로그램에서 성능을 떨어트리는 주요 요소인 입출력 과정에 대한 성능 향상 방법을 살펴본다. 9장은 JDK가 제공하는 정렬 알고리즘을 향상시키는 방법과 효율적인 정렬 알고리즘에 대한 정보를 제공하고 있다. 어느 정도 규모의 소프트웨어를 작성하게 되면 대부분 다중스레드를 사용하여 성능 향상을 꾀한다.



10장은 이러한 다중스레드 처리시 중요한 경주 상태 및 데드락, 동기화 문제 등에 대해 살펴보고 스레드 풀을 이용한 성능 향상 기법을 소개한다. 이러한 기법들은 특히, 다중 사용자 지원 서버 프로그램 작성시 매우 중요한 내용이라고 보인다.



11장은 9장에 이어 JDK가 제공하는 여러 알고리즘의 성능을 비교하고 향상시키는 기법들을 소개하고 있다. 또, JDK가 제공하지 않는 다른 알고리즘을 구현하여 성능을 향상시키는 몇 가지 예제를 제공한다.



12장에서는 자바를 이용하여 분산 애플리케이션 개발시 어떻게 성능을 향상시킬 수 있는지 간단하게 정리하고 있다. 실질적인 개발 예제를 제공하지 않아 약간 아쉬운 감이 있지만 체계적으로 정리된 자료만으로도 충분한 가치는 있다고 보인다.



13장에서는 지금까지 살펴본 모든 최적화 방안들을 개발 단계에서 언제 어떻게 적용하는 것이 가장 좋은지 정리하고 있다. 14장은 프로그램이 동작하는 운영 체제와 네트워크 환경의 최적화에 대한 주요 개념을 소개한다. 마지막으로, 독자들의 심화 학습을 위한 여러 자료들을 정리하여 제공한다.



전체적인 책의 구성을 보면, 소프트웨어 개발 과정에서 언제나 참고할 수 있도록 각 장의 마지막 부분에 ‘성능 확인표’를 제공하고 있다. 이 성능 확인표를 개발자들은 각 단계별 최적화를 위한 가이드 라인으로 적용할 수 있을 것이다. 각 장은 내용적으로 연관 관계가 많지 않으므로 필요에 따라 원하는 내용만 우선 살펴볼 수도 있다. 연관 관계가 있는 내용에서는 필자가 언제나 해당 장을 언급하여 그때마다 살펴볼 수 있도록 하였다. 결론적으로 이 책은 단순히 한 번 정독하여 최적화 기법을 습득하기 위한 구성이라기보다는 전체적인 최적화의 개념을 우선적으로 습득한 후 프로그램 개발 및 설계 과정 중에 지속적으로 참고하여 최적화에 도움이 될 수 있는 참고서의 역할을 할 수 있다고 본다.



책의 편집 상태는 한빛미디어의 다른 책과 마찬가지로 군더더기 없는 심플한 편집을 하여 책을 읽는 데 편암함을 주었다. 번역자가 역자 서문에 밝혔듯이 이 책은 역자의 첫번째 번역서이다. 그래서인지 원문 자체의 번역에 집중하여 약간 껄끄러운 번역이 된 부분이 보이나 전체적인 내용 이해에는 큰 문제가 되지는 않았고 뒤로 진행될수록 번역된 글이 읽기 편안해지는 특징이 보였다. 전체 내용에서 약간의 오탈자를 발견하였는데, 이 오탈자는 한빛미디어의 해당 웹페이지에서 볼 수 있으리라 기대한다. 그러나 내용을 이해하는 데 큰 문제를 끼치는 부분은 아니었다.





김원일(wonkim@gtran.co.kr)님은 현재 GTRAN Korea 데이터 S/W팀 전임연구원이자 월간 마이크로소프트웨어의 필자로 활발하게 활동하는 전문 개발자입니다.

결제하기
• 문화비 소득공제 가능
• 배송료 : 2,000원배송료란?

배송료 안내

  • 20,000원 이상 구매시 도서 배송 무료
  • 브론즈, 실버, 골드회원이 주문하신 경우 무료배송

무료배송 상품을 포함하여 주문하신 경우에는 구매금액에 관계없이 무료로 배송해 드립니다.

닫기

리뷰쓰기

닫기
* 도서명 :
자바 퍼포먼스 튜닝
* 제목 :
* 별점평가
* 내용 :

* 리뷰 작성시 유의사항

글이나 이미지/사진 저작권 등 다른 사람의 권리를 침해하거나 명예를 훼손하는 게시물은 이용약관 및 관련법률에 의해 제재를 받을 수 있습니다.

1. 특히 뉴스/언론사 기사를 전문 또는 부분적으로 '허락없이' 갖고 와서는 안됩니다 (출처를 밝히는 경우에도 안됨).
2. 저작권자의 허락을 받지 않은 콘텐츠의 무단 사용은 저작권자의 권리를 침해하는 행위로, 이에 대한 법적 책임을 지게 될 수 있습니다.

오탈자 등록

닫기
* 도서명 :
자바 퍼포먼스 튜닝
* 구분 :
* 상품 버전
종이책 PDF ePub
* 페이지 :
* 위치정보 :
* 내용 :

도서 인증

닫기
도서명*
자바 퍼포먼스 튜닝
구입처*
구입일*
부가기호*
부가기호 안내

* 온라인 또는 오프라인 서점에서 구입한 도서를 인증하면 마일리지 500점을 드립니다.

* 도서인증은 일 3권, 월 10권, 년 50권으로 제한되며 절판도서, eBook 등 일부 도서는 인증이 제한됩니다.

* 구입하지 않고, 허위로 도서 인증을 한 것으로 판단되면 웹사이트 이용이 제한될 수 있습니다.

닫기

해당 상품을 장바구니에 담았습니다.이미 장바구니에 추가된 상품입니다.
장바구니로 이동하시겠습니까?

자료실