Understading Swift Performance.key.zip
Swift에서 추상화 매커니즘을 선택 할 때, Allocation
, Reference Counting
, Method Dispatch
이 세개를 중점으로 생각해야 한다.
오른쪽으로 갈수록 성능은 저하되고, 왼쪽으로 갈수록 성능은 좋아진다.
Stack
Swift는 자동으로 메모리를 할당, 해제한다. 메모리 중 일부는 Stack에 할당된다.
Stack은 LIFO구조이다. Stack의 마지막, 즉 Top으로만 Push가 가능하며 Top에서만 Pop이 가능하다. 그러니 Stack 끝에 포인터만 유지하면 Push, Pop을 구현할 수 있다. 이 포인터를 Stack Pointer
라고 부른다.
함수를 호출할 때, 우리는 메모리에 먼저 할당을 해야한다.
그 메모리를 단순히 Stack 포인터가 가리키고 있는 곳을 단순히 줄임(decrementing)으로써 필요한 메모리를 할당할 수 있다. 그리고 함수가 끝나면, Stack 포인터를 줄이기 전에 있던 곳으로 증가(incrementing)시킴으로써 그 메모리 할당을 해제할 수 있다.