고성능 .NET 코드 프로그래밍


저자 벤 왓슨

역자 김도균, 금재용

   

출간일 2016년 1월 28일 (목)

정가 25,000원

페이지 336

판형 188 * 245

ISBN 979-11-86697-10- 8(93000)

원서정보 WRITING HIGH-PERFORMANCE.NET CODE




책 소개

   

.NET 프레임워크와 C#에 대한 깊이 있는 이해에서 나온 노하우와 유용

한 지침들로 극한의 성능 향상을 끌어내보자!

   

.NET 코드에서 최고의 성능을 내고 싶은가? 이 책은 최적의 성능을 내는 코드를 작성하는 방법과 이유를 설명하며 CLR의 이해를 도와준다. 세계적인 대규모 고성능 .NET 시스템 중 하나를 설계하고 만드는 데 참여한 저자는 이 책을 통해 .NET과 관련한 중요한 가르침을 독자들에게 전수하고자 한다.

   

이 책에서는 단순히 CLR이 동작하는 방식만을 설명하지 않는다. 최고의 성능을 끌어내는 요인이 정확이 무엇인가를 알려준다. 또 .NET에서 성능 최적화의 요점을 전문적으로 안내해주며, 상세한 CLR 기능 검토와 권장하는 무료 도구 및 튜토리얼, 저자가 겪은 유용한 일화, 성능을 측정하고 개선하는 방법을 단계적으로 설명해준다.

   


이 책에서 다루는 주제

   

-측정할 대상 선택과 그 이유

-빠른 문제 해결을 위해 무료로 사용할 수 있는 도구들과 사용법

-.NET 가비지 수집기와 애플리케이션에 끼치는 영향

-일반적인 GC 관련 문제 진단

-JITing 비용 줄이기

-동기화 문제를 피하면서 다중 스레드에 효과적으로 사용하기

-.NET 기능과 API 중 사용할 것과 피해야 할 것

-코드 생성을 사용한 성능 문제 회피

-철저한 측정으로 숨겨진 성능 문제 드러내기

-성능 카운터와 ETW 이벤트 사용

-최신 .NET 기능 사용

-모바일 기기에서 문제 없이 실행되는 코드

-성능에 민감한 팀 구성하기

   


독자대상


초중급



저자 소개


벤 왓슨


2008년부터 마이크로소프트에서 소프트웨어 엔지니어로 일하고 있다. 그는 Bing 플랫폼 팀에서 일하면서 수백만 명의 고객을 위해 수천 대의 컴퓨터에서 대용량의 낮은 지연 시간 요청을 처리하는 세계 최고의 .NET 기반 고성능 서버 애플리케이션 중 하나를 만들었다. 여유 시간에는 아내 레티샤와 딸 엠마와 함께 GPS 보물찾기와 클래식 음악을 감상하고, 다양한 책을 읽으며 시간을 보낸다. 저서로는 Sams에서 출판된 『C# 4.0 How-To』가 있다.



역자 소개


김도균


"강철벼룩"이라는 필명으로 활동하며 글 쓰는 엔지니어다. 마이크로소프트 공인 강사(MCT)이자 MVP이며 월간 마이크로소프트웨어의 칼럼니스트이기도 하다. 창의성과 상상력이 불꽃 튀는 해적들이 모인 기술 콘텐츠 저술 및 번역 공동체인 GoDev(www.godev.kr)의 선장으로 절망의 시대를 함께 건너고 있다.

   

금재용


경북대학교 밴드 동아리 플레이아데스에서 전자기타를 연주했고, 졸업 후 동 대학 전산교육센터에서 JSP, ASP.NET, C#을 강의했다. 락 음악과 기타연주를 좋아하는 개발자다. 국내 유수의 대기업 및 대형 병원 프로젝트에 참여했던 풍부한 경험을 갖고 있으며, 2012년부터 4년째 C# 분야 마이크로소프트 MVP로 활동 중이다. 와글넷(www.waglwagl.net) 운영진이며, 개인 블로그(blog.naver.com/goldrushing)를 통해 지식을 공유하고 있다. 현재 병원 소프트웨어를 전문 개발사인 (주)에프원소프트를 운영하고 있다.



목차


들어가며


1장. 성능 측정과 도구

- 측정 대상 선택

- 평균 VS. 백분위

- 측정 도구

- 요약

   

2장. 가비지 수집

- 기본 동작

- 구성 옵션

- 할당 비율 감소

- 가장 중요한 규칙

- 개체 수명 줄이기

- 트리의 깊이 줄이기

- 개체들 간의 참조 줄이기

- 고정 피하기

- 종료자 피하기

- 큰 개체 할당 피하기

- 버퍼 복사 피하기

- 수명이 긴 풀과 큰 개체

- 큰 개체 힙 조각화 줄이기

- 전체 GC 수행을 강제하는 환경

- 필요에 따라 대형 개체 힙 조각 모음

- 수집 발생 전에 수집 알림 받기

- 캐시를 위한 약한 참조 사용

- GC 성능 측정과 조사

- 요약

   

3장. JIT 컴파일

- JIT 컴파일의 이점

- JIT 컴파일의 비용

- JIT 컴파일의 최적화

- JIT와 시작 시간 줄이기

- 프로파일링으로 JITing 최적화

- NCEN 사용 시기

- JIT가 경쟁력이 없을 때

- 측정

- 요약

   

4장. 비동기 프로그래밍

- Tasks 사용

- 병렬 루프

- 차단 피하기

- I/O 차단을 피하기 위한 Tasks 사용

- Async와 Await

- 프로그램 구조에 관한 고찰

- 올바른 타이머 사용

- 바람직한 시작 스레드 풀 크기

- 스레드를 중단하지 않는다

- 스레드 우선순위를 변경하지 않는다

- 스레드 동기화와 잠금

- 측정

- 요약

   

5장. 일반 코딩 및 클래스 설계

- 클래스와 구조체

- 구조체에 대한 Equals 및 GetHashCode 오버라이드

- 가상 메서드 및 봉인 클래스

- 인터페이스 디스패치

- 박싱 피하기

- For와 Foreach

- 캐스팅

- 플랫폼 호출(P/Invoke)

- 대리자

- 예외

- Dynamic

- 코드 생성

- 전처리

- 측정

- 요약

   

6장. .NET 프레임워크 사용

- 호출하는 모든 API를 이해하자

- 동일한 작업을 하는 여러 API

- 컬렉션

- 문자열

- 정상적인 상황에서 예외 발생 API 회피하기

- 대형 개체 힙에서 할당한 API 회피하기

- 느슨한 초기화 사용

- 열거의 높은 비용

- 추적 시간

- 정규 표현식

- LINQ

- 파일 읽기

- HTTP 설정 및 네트워크 통신 최적화

- 리플렉션

- 측정

- 요약

   

7장. 성능 카운터

- 존재하는 카운터 사용

- 사용자 정의 카운터 생성

- 요약

   

8장. EWT 이벤트

- 이벤트 정의

- PerfView에서 사용자 정의 이벤트 사용

- 사용자 정의 ETW 이벤트 수신자 생성

- EventSource 데이터 상세 구하기

- 사용자 정의 PerfView 분석 확장

- 요약

   

9장. Windows Phone

- 도구

- 가비지 수집 및 메모리

- JIT

- 비동기 프로그래밍과 메모리 모델

- 기타 고려 사항

- 요약

   

10장. 코드 안정성

- OS와 API와 하드웨어 기본 이해하기

- 코드의 특정 영역에서 API 사용 제한하기

- 중앙 집중화 및 성능에 민감한 추상화와 어려운 코드

- 비관리 또는 안전하지 않은 코드 격리

- 입증 전까지 성능에 대한 코드 무결성 유지

- 요약

   

11장. 성능을 고민하는 팀 꾸리기

- 중요한 성능 영역 이해

- 효과적인 테스트

- 성능 인프라 및 자동화

- 숫자만을 신뢰하자

- 효과적인 코드 리뷰

- 교육

- 요약

   

부록 A. 애플리케이션 성능 시동 걸기

- 메트릭 정의

- CPU 사용률 분석

- 메모리 사용률 분석

- JIT 분석

- 비동기 성능 분석

   

부록 B. 빅 O 표기

- 일반적인 알고리즘 및 알고리즘 복잡성

   

부록 C. 참고 자료

- 유용한 책

- 주요 인물과 블로그



출판사 리뷰


이 책은 가능하면 .NET의 이점을 희생하지 않고, 아니면 적어도 최소화하면서 관리 코드에서 최대 성능을 끌어내는 방법을 설명한다. 좋은 코딩 기술, 피해야 할 것들, 그리고 가장 중요한 것으로 쉽게 성능 측정이 가능한 무료 도구들을 사용하는 방법에 대해서 배우게 될 것이다. 군더더기를 최소화하고 핵심을 가르쳐 줄 것이다. 이 책은 딱 알아야 할 내용만 다룬다. 대부분의 장은 특정 팁을 따르는 일반적인 지식과 배경으로 시작되며, 최종적으로 단계적인 측정과 많은 시나리오에 대한 디버깅 절로 끝맺는다.

   

안내에 따라 .NET의 특별한 부분을 깊이 있게 살펴보고, 특히 공용 언어 런타임(CLR)과 공용 언어 런타임이 메모리를 관리하고, 코드를 생성하고, 동시성을 처리하는 방법을 살펴본다. 소프트웨어를 제한하고 허용하는 .NET의 아키텍처 방법과 프로그래밍 선택이 애플리케이션의 전체적인 성능에 크게 영향을 미치는 방법을 알게 될 것이다. 보너스로, 이 책의 저자는 마이크로소프트에서 지난 6년 동안 매우 크고 복잡한 고성능 .NET 시스템을 구축한 것과 관련한 일화를 공유한다. 저자의 경험이 서버 애플리케이션에 맞춰져 있긴 하지만, 이 책에서 논의된 거의 모든 내용이 데스크톱과 모바일 애플리케이션에도 마찬가지로 적용된다는 것을 쉽게 알 수 있을 것이다. 적절한 위치에서 이러한 특정 플랫폼들에 대한 조언을 공유한다.

   

IL이나 어셈블리 코드에서 기본이 되는 많은 구현 세부 사항의 코드 예제가 있다. 코드 예제들이 있는 절을 흘려보지 않았으면 한다. 진행 과정을 정확하게 이해하기 위해서 이 책을 통해 자신의 일처럼 이 책의 결과를 모방하려고 노력해야 할 것이다. 그러면 특별히 이 책에서 다루지 않은 상황의 실행에서도 새로운 지식을 적용하고 예기치 못한 문제를 풀 수 있도록 .NET과 잘 구성된 코드의 원칙에 대한 충분한 이해를 얻게 될 것이다.



신고

'신간 및 전체도서' 카테고리의 다른 글

저전력 블루투스  (6) 2016.02.02
고성능 .NET 코드 프로그래밍  (0) 2016.01.18
머신 러닝  (2) 2016.01.13
소프트웨어 작동법  (2) 2015.12.11
Trackback 0 | Comment 0

퍼블릭's Blog is powered by Daum & tistory