Algorithm Concepts and C++ Syntax

C++ 최적화 팁 : 반복적 함수 호출 시 인자를 참조로 전달해야 하는 이유

doyyy_0 2024. 10. 1. 09:37

반복적으로 함수를 호출 시에 인자를 참조로 전달해야하는 이유가 있다.

 

1. 재귀문인 경우 

예를들어 func(vector<int>v){};라는 함수가 있고,  func(v)가 무수히 많이 실행된다고 생각해보자. 이때 한번 호출 할 때마다, 벡터의 복사본이 생성이 돼서 성능저하를 일으킬 수 있다. 이 때 참조로 전달하면 이 문제를 해결할 수 있다. 

다음과같이

func(vector<int> &v)

로하면 해결이 된다.

 

2. 반복문에서 auto가 쓰일때

 

for(auto iter : v)
{
	//..
}

for(auto &iter : v)
{
	//..
}

전자는 반복문이 한번 실행 될 때마다 v[i]가 생성되어 메모리를 많이 차지하고 따라서 성능 저하가 일어난다.

 

후자는 반복문이 실행되더라도 v[i]를 생성하는게 아닌 참조해버리기 때문에 성능 저하가 일어나지 않는다.