func addTwoNumbers(num1: Int, num2: Int) -> Int {
var result = num1 + num2
return result
}
위와 같은 구조를 가진 함수의 동작 방식을 메모리 영역을 기준으로 간단하게 살펴보면 다음과 같은 순서를 가진다.
1. 임시공간을 만든다
2. num1라는 상수에 Int값을 저장한다
3. num2라는 상수에 Int값을 저장한다
4. result 변수 공간을 만든다
5. num1 + num2를 더해 임시값을 가진다
6. 임시값을 result에 할당한다
7. result의 값을 임시공간에 저장한다
8. 임시 공간의 값을 함수의 결과로 리턴시켜준다
이때 굳이 result라는 변수에 임시값을 할당하고 다시 리턴시켜줄 필요 없이 바로 임시값을 리턴시켜주면 조금 더 효율적으로 메모리를 사용하는 것이 아닐까 하는 가설이 떠올랐고 다음과 같은 테스트를 실행해 보았다.
[기존의 코드]
func complex(num1: Int, num2: Int) -> Int {
var result = num1 + num2
return result
}
[개선시킨 코드]
func simple(num1: Int, num2: Int) -> Int {
return num1 + num2
}
[시간 측정 결과]
개선 전 코드를 100,000번 반복했을 때 시간 측정 결과 : 1.06
개선한 코드를 100,000번 반복했을때 시간 측정 결과 : 0.64
위의 실험은 시간 측정을 위해 극단적으로 여러 번 반복시켰지만 임시값을 변수에 할당시키는 과정을 생략하였더니 실행 속도가 개선됐음을 알 수 있다!
[결론]
다른 사람이 이해하는데 불편함이 없는 선에서 성능 개선을 위해 불필요한 과정을 생략한 코드를 작성하자!
'iOS > Swift' 카테고리의 다른 글
[Swift] Class의 성능을 향상 시킬수 있는 방법 :: Static Dispatch (0) | 2023.02.09 |
---|---|
[Swift] Class, Struct, Enum의 차이점을 알아보자 (0) | 2023.02.09 |
[Swift] 일급객체란? (0) | 2022.04.11 |
[Swift] Optional(옵셔널)도 결국 Enum type(열거형 타입)이다 (0) | 2022.03.26 |
[Swift] 열거형 케이스 패턴에서 let 위치 차이점 (0) | 2022.03.25 |