상세정보
C++최적화 - 최고 성능을 구현하는 10가지 검증된 기법
- 저자
- 커트 건서로스 지음, 옥찬호 옮김
- 출판사
- 한빛미디어
- 출판일
- 2019-07-04
- 등록일
- 2019-12-24
- 파일포맷
- PDF
- 파일크기
- 5MB
- 공급사
- 알라딘
- 지원기기
-
PC
PHONE
TABLET
프로그램 수동설치
뷰어프로그램 설치 안내
책소개
빠르고 간결한 C++을 위한 프로의 최적화 팁!
빠른 코드를 작성하는 시간은 느린 코드를 작성하는 시간보다 결코 길지 않다. 이 책은 올바른 코드를 구현하면서도 빠른 C++ 프로그램을 만드는 최적화 방법을 소개한다. 습관적으로 쓰는 C++ 구문을 점검해보고 싶다면 35년 경력의 저자가 소개하는 10가지 기법으로 시작해보자. 자원을 소비하고 실행 시간을 잡아먹는 부분을 찾아내 개선하다 보면 "와, 정말 빠른데! 누가 고쳤지?!"라는 말을 듣게 될지도 모른다. 실제 사례에 기반한 실용적인 팁으로 진정한 프로가 되어보자.
C++은 자동화와 표현력부터 성능을 향상시키는 세밀한 제어까지, 다양한 옵션을 제공한다. 그래서 C++로 만든 프로그램에는 최적화할 여지가 곳곳에 숨어 있다. `코드를 제대로 작성하고 있는 걸까?` 의심이 든다면 지금 최적화를 시작해보자. 프로그램 속도를 느리게 하는 `유력 용의자`를 검거하는 방법은 알고 보면 놀라울 정도로 간단하고 명쾌하다. 저자가 소개하는 풍부한 팁과 예제를 활용해 연습하다 보면 금세 뛰어난 성능을 내면서 가독성까지 높은 코드를 작성할 수 있다.
[이 책에서 다루는 10가지 최적화]
_1. 성능에 영향을 주는 컴퓨터 하드웨어 기본 지식
_2. 프로파일러와 소프트웨어 타이머를 활용한 측정 기법
_3. 최신 C++에서 문자열의 기능을 최적으로 조합하는 방법
_4. 비효율적인 알고리즘을 개선하고 C++ 코드의 행동 패턴을 참조해 최적화하는 방법
_5. 동적 할당 변수를 제대로 사용하고 메모리 관리자의 호출 횟수를 줄이는 방법
_6. 실행에 불필요한 명령어를 제거하여 문장 수준에서 최적화를 이루는 방법
_7. 처음부터 고성능을 목표로 하는 라이브러리를 설계하는 방법
_8. C++ 컨테이너 클래스의 장점과 단점을 이해하고 활용하는 방법
_9. C++ 스트리밍 입출력 함수를 효율적으로 사용하는 방법
_10. 그 외 성능 저하를 일으키는 요인을 찾아내고 수정하는 방법
저자소개
35년 경력 소프트웨어 개발자. 25년 동안 윈도우, 리눅스, 임베디드 장치에서 C++ 코드를 개발했다. 업무 시간 외에는 아내 그리고 네 아들과 함께 지내며, 현재 워싱턴 주 시애틀에 산다.
목차
CHAPTER 1 최적화란
__1.1 최적화는 소프트웨어 개발의 일부입니다
__1.2 최적화는 효과적입니다
__1.3 최적화해도 괜찮습니다
__1.4 여기에 나노초, 저기에 나노초
__1.5 C++ 코드 최적화 전략 요약
__1.6 마치며
CHAPTER 2 컴퓨터 하드웨어와 최적화
__2.1 C++은 컴퓨터의 거짓말을 믿습니다
__2.2 컴퓨터의 진실
__2.3 C++도 거짓말을 합니다
__2.4 마치며
CHAPTER 3 성능 측정
__3.1 사고방식 최적화
__3.2 실험 수행
__3.3 프로그램 실행 프로파일
__3.4 시간이 오래 걸리는 코드
__3.5 코드 비용 추정하기
__3.6 최적화할 코드를 찾는 다른 방법
__3.7 마치며
CHAPTER 4 문자열 최적화
__4.1 문자열이 왜 문제인가요
__4.2 문자열 최적화 첫 번째 시도
__4.3 문자열 최적화 두 번째 시도
__4.4 문자열 변환 연산 제거하기
__4.5 마치며
CHAPTER 5 알고리즘 최적화
__5.1 알고리즘의 시간 비용
__5.2 검색과 정렬을 최적화하는 툴킷
__5.3 효율적인 검색 알고리즘
__5.4 효율적인 정렬 알고리즘
__5.5 최적화 패턴
__5.6 마치며
CHAPTER 6 동적 할당 변수 최적화
__6.1 C++ 변수
__6.2 C++ 동적 변수 API
__6.3 동적 변수 사용 줄이기
__6.4 동적 변수의 재할당 줄이기
__6.5 불필요한 복사 제거하기
__6.6 이동 문법 구현하기
__6.7 평평한 자료구조
__6.8 마치며
CHAPTER 7 문장 최적화
__7.1 반복문에서 코드 제거하기
__7.2 함수에서 코드 제거하기
__7.3 표현식 최적화
__7.4 제어 흐름 최적화
__7.5 마치며
CHAPTER 8 라이브러리 최적화
__8.1 표준 라이브러리 최적화
__8.2 기존 라이브러리 최적화
__8.3 최적화된 라이브러리 설계
__8.4 마치며
CHAPTER 9 검색 및 정렬 최적화
__9.1 std::map과 std::string을 사용한 키/값 테이블
__9.2 검색 성능 향상을 위한 툴킷
__9.3 std::map을 사용한 검색 최적화
__9.4 헤더를 사용한 검색 최적화
__9.5 해시 키/값 테이블 검색 최적화
__9.6 스테파노프의 추상화 패널티
__9.7 C++ 표준 라이브러리로 정렬 최적화
__9.8 마치며
CHAPTER 10 자료구조 최적화
__10.1 표준 라이브러리 컨테이너 알아보기
__10.2 std::vector와 std::string
__10.3 std::deque
__10.4 std::list
__10.5 std::forward_list
__10.6 std::map과 std::multimap
__10.7 std::set과 std::multiset
__10.8 std::unordered_map과 std::unordered_multimap
__10.9 다른 자료구조
__10.10 마치며
CHAPTER 11 입출력 최적화
__11.1 파일을 읽는 방법
__11.2 파일 쓰기
__11.3 std::cin으로 읽어서 std::cout으로 쓰기
__11.4 마치며
CHAPTER 12 동시성 최적화
__12.1 동시성
__12.2 C++ 동시성 기능
__12.3 C++ 프로그램 스레드 최적화
__12.4 더 효율적인 동기화 만들기
__12.5 동시성 라이브러리
__12.6 마치며
CHAPTER 13 메모리 관리 최적화
__13.1 C++ 메모리 관리 API
__13.2 고성능 메모리 관리자
__13.3 클래스 한정 메모리 관리자 제공하기
__13.4 사용자 정의 표준 라이브러리 할당자 제공하기
__13.5 마치며