Copy On Write(COW)는 뭐지?
Swift를 기준으로 작성하고 있지만 여기서만 쓰이는 건 아니고 프로그래밍 언어 대부분에서 사용하는 성능 최적화 매커니즘임
Struct 설명에서도 나왔지만 Struct의 경우 값 복사를 하자나요? 이때 값 복사를 하는 방법이 COW임
그래서 Copy-on-Write가 모라는거임?
값 복사를 수행할 때 최적화를 위해서 사용한다는 말임!
근데 여기서 복사 동작을 수행할 때 무조건 일단 복사를 하는게 아닌거임! (복사를 하지만 복사를 안함)
원본을 복사해서 복사본이 생겼다고 가정해 보겠음
그러면 복사본은 원본의 값을 복사해서 가지고 있어야 하잖아요? 맞죠?
만약에 이때 수정된 값이 없다면?? 그래서 복사본과 원본이 동일한 값을 가지고 있다면 복사하지 않음!!!!
복사하지 않고 원본을 공유하고 있다가, 수정된 내용이 생길경우 그제서야 복사를 하는거임!!
요약
- struct 에서 원본을 복사해서 복사본을 만들경우 수정된 값이 없을경우 원본의 주소를 공유함
- 수정이 발생했을 때 비로소 값 복사가 일어남
그럼 이걸 왜 쓸까?
- 불필요한 메모리 사용을 막는 용도임!
만약에 수정된 사항도 없는데 복사를 해버리면 메모리를 두배로 쓰는거잖아여
그래서 수정이 발생했을 때(값이 달라졌을 때) 복사를 하는거임
그 대신 첫 번째 수정 시 약간의 오버헤드가 발생한다고는 합니다(데이터 복사를 그제서야 하니깐)
'iOS > iOS 기술 면접' 카테고리의 다른 글
Optional (1) | 2023.11.02 |
---|---|
AnyObject (0) | 2023.11.02 |
Convenience init (1) | 2023.10.31 |
Class의 성능을 향상 시킬 수 있는 방법 (1) | 2023.10.31 |
Struct와 Class와 Enum의 차이 (0) | 2023.10.30 |