본문 바로가기

CS/자료구조

성능 분석과 측정

- 캡슐화 : 정보 은닉

- 추상화 : 데이터 객체의 명세와 구현을 분리하는 것

- 데이터 타입 : 객체들과 이들 객체들에 대해 동작하는 연산들의 집합(int, 산술연산자)

- 추상 데이터 타입(ADT) : 기능의 구현을 나타내지 않고 정의만 한 것


- 복잡도(complexity) : 프로그램은 실행하는 하드웨어에 따라 실행 시간이 다르므로 컴퓨터에 관계없이 시간과 공간을 추산하는 것

 시간 복잡도, 공간 복잡도

- 성능 평가 : 성능 분석(사전 예측), 성능 측정(사후 검사)


(1) 성능 분석

   - 공간 복잡도 : 필요한 공간의 크기, 고정공간과 가변공간

   - 시간 복잡도 : 프로그램이 실행될 때 피료한 실행분의 실행 횟수(count문 삽입, 실행문의 빈도수 계산)

     


   - 성능 분석을 위한 점근 표기법

      * 점근 표기법이란? 대략적으로 수행시간이나 공간을 예측하기 위해 사용

          1) 빅오(O)

             상한선 표기법

  모든 n, n n0  에 대해  f(n) cg(n) 인 두 개의 상c n0가 존재한다면 f(n) = O(g(n)

  만약 f(n) = am nm + + a1 n + a0  이면f(n) = O(nm)

2) 오메가(Ω)

    하한선 표기법

         모n, n n0  에 대해  f(n) cg(n) 인 두 개의 상수 c n0가 존재한다면 f(n) = Ω(g(n) )

      3) 세타(Θ)

         모든 n, n n0  에 대해 c1 g(n) f(n) c2 g(n) 개의 상수 c1 , c2 n0가 존재한다면 f(n) = Θ(g(n) )

       

              

         


(2) 성능 측정

    - time 함수 사용(시간이 0인 경우, 여러 번 반복한 후 전체 시간을 반복 횟수로 나눔)


(3) 테스트 데이터의 생성

    - 일반적으로 쉽게 테스트 데이터를 얻을 수 없음

    - 최악의 경우 : 대규모의 무작위 데이터에 대한 결과값들 중 최대값

    - 평균의 경우 : 대유모의 무작위 데이터에 대한 결과값들 중 평균값



'CS > 자료구조' 카테고리의 다른 글

힙(Heap)  (0) 2019.08.14
트리(Tree)  (0) 2019.08.05
큐(queue)  (0) 2019.04.03
스택(stack)  (0) 2019.03.24
순차 자료 구조  (0) 2019.03.21