E D R , A S I H C RSS

Profiling

Profiling(프로파일링)은 원하는 부분의 프로그램 성능을 측정하는 성능 테스트이다.
----


1. 소개

많은 선인들이 절대로 최적화를 우선시 하지 말라는 말씀 하지만 프로그램을 작성하면서, 우리가 많이 신경 쓰는 부분은 성능이다.
~cpp 
순간에 얼마나 많은 사용자를 수용할수 있는가? 
사용자의 요구에 얼마나 빠른 응답을 보이는가? 
좀더 적은 메모리를, 좀더 적은 디스크의 용량을 사용할수 있는가? 
...
이런 성능을 좌우하는 것은 문제 상황에 적절한 자료구조와 알고리즘이다. 그리고 우리가 감안해야 할점은 이것이다.

과연 어떤 부분에 대한 최적화를 해야 할 것인가?

이탈리가 경제학자 파레토는 사회 전반을 관찰하면서 부의 편중, 자원의 편중 통계를 분석해서 20/80 법칙을 제시하였다. 통칭 20/80법칙, 파레토 법칙이라고 불리며 기타 여러 분야에도 폭넓게 적용된다.

이런 파레토 법칙은 프로그램에서도 적용될 수 있는 법칙인데, 이런 식이다. (몇%는 중요하지 않다. 중요한 점은 인간이 보통 인지하는 것과 실제의 모습이 차이가 있다는 점이다. )
{{|
프로그램의 80%의 리소스가 20%의 코드에서 쓰여진다.
실행 시간의 80%가 대략 20%의 코드를 소모한다
80%의 메모리는 어떤 20%의 코드에서 쓴다.
80%의 disk 접근은 20%의 코드에서 이루어진다.
80%의 소프트웨어 유지의 노력은(maintenance effort)는 20%의 코드에 쏟아 부어진다.
|}}
프로그램이 성능을 높이기 위해서 이런 20%의 핵심 코드를 추정, 측정을 통해서 찾아야한다.

Profiling(프로파일링)은 원하는 부분의 프로그램 성능을 측정하는 성능 테스트이다.
(다른 소개글로 마소4월호기사 Python 최적화론를 추천한다.-링크깨졌음)

2. Profiling 의 방법

2.1. 원하는 코드에 수행시간을 측정코드를 삽입해서 결과를 관찰

PerformanceTest C/C++을 이용한 성능 측정 코드 작성

2.2. 수행코드 측정 관련 도구 이용

언어 관련 페이지
C/C++ C++Profiling
Java JavaProfiling
----
컴퓨터분류,프로그래밍분류
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2009-05-27 07:09:19
Processing time 0.3170 sec