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] = [0, 1, 2, 3]
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
'🍎iOS프로그래밍 > 오늘의 공부' 카테고리의 다른 글
에어비앤비 - 거대한 iOS앱의 생산성을 위해 바꾼 것들(2) (0) | 2023.08.31 |
---|---|
에어비앤비 - 거대한 iOS앱의 생산성을 위해 바꾼 것들(1) (0) | 2023.08.30 |
Swift - 아이폰 키보드를 내리는 여러 방법 (0) | 2022.10.04 |
Xcode - Xcode dosen't support iOS 16 해결하기 - 개발자모드 켜기 (0) | 2022.09.26 |
iOS HIG - Human Interface Guideline 읽어보기 2[iOS-2 Wigets편] (0) | 2022.08.08 |
댓글