자료구조 - performance analysis

taehyeong's 개발 일지·2023년 11월 7일

자료구조

목록 보기
1/4
post-thumbnail

자신이 원하는 프로그램을 만들어서 그 목적에 맞게 실행이 정상적으로 된다면 문제가 없다고 할 수 있지만, 수많은 자료 및 데이터를 처리하는 프로그램은 단순 실행만 잘 되는게 아니라 다양한 상황에서 더 좋은 성능을 내야한다. 그래서 메모리를 최대한 효율적으로 사용하며 runtime(실행시간) 속도도 빠른 프로그램 상의 구조나 알고리즘이 필요하다. 이러한 프로그램의 성능을 분석하는데 있어서 두가지의 요소가 있다.

#1. 시간 복잡도 (time complexity)
얼마나 빠른 시간 내에 프로그램이 작동하는가?

#2. 공간 복잡도 (space complexity)
얼마만큼의 메모리를 차지하는가?

이렇게 위 두가지 요소를 바탕으로 성능 분석을 한다.

다음의 두 코드를 비교해보자

  1. Iterative function for sum of a list of numbers (반복문 함수)
int sumNumbers(int list[], int n)
{
	int sum = 0;
    int i;
    for(i = 0; i < n; i++) 
    {
    	sum += list[i];
	}
	return sum;
}
  1. recursive function for sum of a list of numbers (재귀 함수)
int sumNumbers(int list[], int n) 
{
	if(n) 
    {
    	return list[n - 1] + sumNumbers(list, n - 1);
    }
    return 0;
}

이 두 함수는 똑같이 list 배열의 원소들을 다 더한 값을 반환하는 기능을 한다. 하지만 시간복잡도 면에서 유의미한 차이가 있을 것이라는 예측을 할 수가 있다.

profile
https://www.acmicpc.net/user/tigro0115

0개의 댓글