개발하는 동글 :]

[TIL],[Swift],[ArraySlice],[COW] 본문

카테고리 없음

[TIL],[Swift],[ArraySlice],[COW]

동글하다 2023. 7. 14. 11:57

ArraySlice란 ?

struct ArraySlice<Element>

ArraySlice : Array, ContiguousArray 또는 ArraySlice 인스턴스의 slice

ArraySlice타입의 특징

  • 더 큰 배열의 section에서 작업을 빠르고 호율적으로 수행 할 수 있다. 
  • 슬라이스 요소를 새 저장소로 복사하는 대신, ArraySlice인스턴스는 더 큰 배열의 저장소에 대한 view를 제공 -> COW
    • COW 란? (Copy On Write)
    • 컴퓨터 프로그래밍에서 복사 동작을 할 때,실제 원본이나 복사본이 수정되기 전까지는 복사를 하지 않고 원본 리소스를 공유함
    • 원본이나 복사본에서 수정이 일어날 경우, 그때 복사하는 작업을 함
  • 또한 ArraySlice는 Array와 동일한 인터페이스를 제공하므로, 일반적으로 ArraySlice에서 원래 Array와 동일한 작업을 수행 할 수 있다.
  • ArraySlice를 또 slice해도 ArraySlice

주의 사항

  • ArraySlice인스턴스의 장기보관은 권장하지 않는다.
    • slice는 원래 배열의 수명이 끝난 후에도 더 큰 배열의 전체 저장소에 대한 참조를 제공한다. 따라서, slice의 장기간 저장은 더이상 접근 할 수 없는 요소의 수명을 연장시킬 수 있으며, 이는 메모리 및 객체 누출로 나타날 수 있다.