본문 바로가기
🍎iOS프로그래밍/오늘의 공부

[Swift] COW(Copy-On-Write)

by 둥둥동동# 2023. 2. 24.
728x90

 

COW (Copy-On-Write)

 

Wirte발생시 Copy한다

 

COW (Copy-On-Write)

 

Swift에서 Array, String, Int, Double 등 대부분의 자료형은 Value Type인 Struct으로 구현되어 있습니다. 

값타입의 데이터 모두에게 새로운 공간을 할당하고 복사하는 것은 굉장한 비용이 발생하므로 copy-on-write (cow)라는 최적화 기법이 사용됩니다.

cow는 수정되기 전 까지는 동일한 메모리를 참조하고 수정이 일어났을 때 새로운 공간을 할당해 복사본을 만드는 것입니다

 

Collection인 Array를 이용한 예시입니다

동일한 값을 지닌 경우 동일한 메모리주소를 출력하고 array2에 수정이 발생하자 주소가 바뀐것을 볼 수 있습니다.

import Foundation
 
func print(address o: UnsafeRawPointer ) {
    print(String(format: "%p"Int(bitPattern: o)))
}
 
var array1: [Int= [0123]
var array2 = array1
 
//Print with just assign
print(address: array1) //0x55ec7bd92310
print(address: array2) //0x55ec7bd92310
 
//Let's mutate array2 to see what's
array2.append(100)
 
print(address: array2) //0x55ec7be4f7b0
cs

 

 

 

728x90

댓글