'''Profiling'''(프로파일링)은 원하는 부분의 프로그램 성능을 측정하는 성능 테스트이다. ---- [[TableOfContents]] == 소개 == 많은 선인들이 절대로 최적화를 우선시 하지 말라는 말씀 하지만 프로그램을 작성하면서, 우리가 많이 신경 쓰는 부분은 '''성능'''이다. {{{~cpp 순간에 얼마나 많은 사용자를 수용할수 있는가? 사용자의 요구에 얼마나 빠른 응답을 보이는가? 좀더 적은 메모리를, 좀더 적은 디스크의 용량을 사용할수 있는가? ... }}} 이런 '''성능'''을 좌우하는 것은 문제 상황에 적절한 자료구조와 알고리즘이다. 그리고 우리가 감안해야 할점은 이것이다. '''과연 어떤 부분에 대한 최적화를 해야 할 것인가?''' 이탈리가 경제학자 파레토는 사회 전반을 관찰하면서 부의 편중, 자원의 편중 통계를 분석해서 20/80 법칙을 제시하였다. 통칭 20/80법칙, 파레토 법칙이라고 불리며 기타 여러 분야에도 폭넓게 적용된다. 이런 파레토 법칙은 프로그램에서도 적용될 수 있는 법칙인데, 이런 식이다. (몇%는 중요하지 않다. 중요한 점은 인간이 보통 인지하는 것과 실제의 모습이 차이가 있다는 점이다. ) {{| 프로그램의 80%의 리소스가 20%의 코드에서 쓰여진다. 실행 시간의 80%가 대략 20%의 코드를 소모한다 80%의 메모리는 어떤 20%의 코드에서 쓴다. 80%의 disk 접근은 20%의 코드에서 이루어진다. 80%의 소프트웨어 유지의 노력은(maintenance effort)는 20%의 코드에 쏟아 부어진다. |}} --''[MoreEffectiveC++/Efficiency]'' 프로그램이 성능을 높이기 위해서 이런 20%의 핵심 코드를 추정, 측정을 통해서 찾아야한다. '''Profiling'''(프로파일링)은 원하는 부분의 프로그램 성능을 측정하는 성능 테스트이다. (다른 소개글로 [http://maso.zdnet.co.kr/20010407/about/article.html?id=120&forum=0 마소4월호기사 Python 최적화론]를 추천한다.-링크깨졌음) == Profiling 의 방법 == === 원하는 코드에 수행시간을 측정코드를 삽입해서 결과를 관찰 === || PerformanceTest || C/C++을 이용한 성능 측정 코드 작성 || === 수행코드 측정 관련 도구 이용 === || 언어 || 관련 페이지 || || C/C++ || [C++Profiling] || || [Java] ||JavaProfiling || ---- [컴퓨터분류],[프로그래밍분류]