일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- implicit conversion
- 영화
- 예외
- virtual function
- 영화 리뷰
- 게임
- Smart Pointer
- 메타테이블
- reference
- operator new
- 루아
- lua
- 티스토리챌린지
- 오블완
- 암시적 변환
- more effective c++
- 스마트 포인터
- exception
- 반복자
- Effective c++
- effective stl
- 언리얼
- UE4
- 함수 객체
- 상속
- c++
- resource management class
- 참조자
- 다형성
- 비교 함수 객체
Archives
- Today
- Total
스토리텔링 개발자
[More Effective C++] 16. 파레토 법칙 본문
728x90
항목 16 : 뼛속까지 잊지 말자, 80-20 법칙!
80-20 법칙
- 프로그램 리소스의 80%는 전체 실행 코드의 20%만 사용한다.
- 실행 시간의 80%는 실행 코드의 20%만 소비한다.
- 메모리의 80%는 실행 코드의 20%만 사용한다. 등..
- 단순한 캐치 프라이즈가 아니라 시스템 수행 성능에 대한 사례와 실험적 증거를 기저에 깔고 있는 법칙이다.
80-20 법칙에 대한 다양한 해석
- 프로그래머가 작성하는 대부분의 코드는 그저 그런 수행 성능이다.
- 즉, 전체 수행 성능에는 별 영향을 주지 못한다.
- 소프트웨어에 수행 성능의 문제가 있으면 성능의 발목을 잡는 20%를 찾아내는 작업을 해야 한다.
- 즉, 소수의 코드가 대부분의 성능의 발목을 잡고 있다면, 이는 어림짐작으로 해결할 수 있는 성질의 것이 아니다.
병목 현상 위치 탐색 방법 두 가지
- 어림짐작
- 하지만 대부분의 프로그래머는 자신이 짠 프로그램의 수행성능을 정확히 모른다.
- 프로그램 수행 성능 자체가 직관적으로 파악할 수 있는 게 아니므로.
- 80-20 법칙에 따른다면..
- 사실 아무곳이나 골라잡고 효율을 향상시키려고 애쓰는 것은 별 도움이 안된다.
- 하지만 대부분의 프로그래머는 자신이 짠 프로그램의 수행성능을 정확히 모른다.
- 프로그램 프로파일러(program profiler)
- 아무거나 사용하면 되는 것이 아니라, 관심을 두고 있는 리소스를 직접 측정해 주는 도구가 필요하다.
- 실행 영역 별로 시간 측정을 해주는 프로파일러
- 프로그램이 느린 경우
- 문장이 몇 번 실행되고 함수가 몇 번 호출되는지 가르쳐주는 프로파일러
- 프로그램의 동작 원리를 더 잘 파악하고 대처하고자 하는 경우
- 예1) 어떤 특정 타입의 객체를 백개 정도 생성하는 것 같다고 짐작하는데, 이를 좀 더 정확히 파악해보고 싶다면 생성자 호출 횟수를 세면 된다.
- 예2) 동적 메모리 사용을 직접 점검할 수 없는 상황이라면 메모리 할당, 해제 함수(operators new, new[], delete, delete[])의 호출 횟수를 세면 된다.
- 실행 영역 별로 시간 측정을 해주는 프로파일러
- 최대한 많은 데이터를 사용하여 프로파일링 해보자.
- 프로파일링 데이터는 사용자가 실제로 소프트웨어를 사용할 때 쓰이는 데이터를 사용하도록 하자.
- 아무거나 사용하면 되는 것이 아니라, 관심을 두고 있는 리소스를 직접 측정해 주는 도구가 필요하다.
728x90
'개발 > More Effective C++' 카테고리의 다른 글
[More Effective C++] 18. 과도 선행 평가 (0) | 2024.08.23 |
---|---|
[More Effective C++] 17. 지연 평가 (0) | 2024.08.22 |
[More Effective C++] 15. 예외 처리 비용 (0) | 2024.08.20 |
[More Effective C++] 14. 예외 지정(예외 명세) (0) | 2024.08.19 |
[More Effective C++] 13. catch 매개변수는 참조자 (0) | 2024.08.16 |
Comments