Swift

[Swift] COW(Copy-on-Write)에 대하여

mutating 키워드를 찾아보다가 알게된 cow에 대한 개념을 정리한 글입니다.


COW (Copy-On-Write)

 

직역하면 쓰기(Write)에서 복사(Copy) 한다는 뜻이다.

이것을 설명하기 위해 예를 들어보자.

 

우리가 알고있는 구조체는 값 타입이기 때문에 새로운 변수로 값이 전달될때
값 복사가 일어난다고 알고 있지만 사실은 조금 다르다.

 

Swift에서 기본 데이터 타입(Int, Double, String)과 컬렉션 타입(Array, Dictionary)은

구조체로 구현돼있지만 아래 같은 상황에서 값 복사가 일어나지 않는다.

var first = [1, 2, 3, 4, 5]
var second = first
var third = first

 

만약 first의 원소 개수가 대략 천만개라면 값을 전달할때마다 매번 천만개의 값을 복사해줘야해서

시간도 오래 걸릴 뿐더러 메모리를 많이 사용하게 된다.

 

복사를 하더라도 fisrt, second, third의 값이 변경되지 않고 모두 같은 값을 사용할 경우

하나의 원본만 참조하는 것이 효과적일 것이다.

 

그래서 first와 second, third는 어느 하나의 값이 변경되기 전까지 같은 리소스를 공유하다가

값의 변경이 발생(write)했을때 복사(copy)가 일어나도록 하는 기술이 cow이다.

 


참고자료 : https://babbab2.tistory.com/18

 

Swift) COW (Copy-on-Write)

안녕하세요 소들입니다 😞 오늘은 뭔가 축축 쳐지는 날이네요 며칠 째 계속되는 장마 탓도 있고.. (비 혐오자) 개발과는 참 애증의 관계인 것인지.. 공부할 건 너~~~~~~무 많고..ㅜㅜ 멋진 개발자

babbab2.tistory.com

https://jmkim0213.github.io/ios/swift/2019/02/18/copy_on_write.html

 

[Swift] class와 struct 그리고 Copy On Write

개발로 개발하는 개발자 무과장 블로그입니다. :)

jmkim0213.github.io

 

'Swift' 카테고리의 다른 글

[Swift] JSON 객체를 구조체로 변환하기  (0) 2022.05.16
[Swift] Singleton과 Thread-Safe  (0) 2022.05.12
[Swift] 초기화(Initialization)란?  (0) 2022.05.12