수색…


할당 성능

Swift에서는 자동 참조 횟수를 사용하여 메모리 관리가 자동으로 수행됩니다. ( 메모리 관리를 참조하십시오.) 할당은 객체에 대해 메모리의 한 부분을 예약하는 프로세스이며, 이러한 성능을 신속하게 이해하려면 스택에 대한 이해가 필요합니다. 힙은 대부분의 객체가 배치되는 메모리 위치이며 저장소 창고라고 생각할 수 있습니다. 반면 스택은 현재 실행을 유도 한 함수의 호출 스택입니다. 따라서 스택 추적은 호출 스택에있는 함수의 일종의 출력입니다.

스택에서 할당 및 할당 해제는 매우 효율적인 작업이지만 힙 할당은 비용이 많이 든다. 성능을 고려하여 설계 할 때는이를 명심해야합니다.

수업 :

class MyClass {

    let myProperty: String

}

Swift의 클래스는 참조 유형이므로 여러 가지 일이 발생합니다. 먼저 실제 객체가 힙에 할당됩니다. 그런 다음 해당 객체에 대한 참조를 스택에 추가해야합니다. 이것은 클래스를 할당하기에 더 비싼 객체로 만듭니다.

구조체 :

struct MyStruct {

    let myProperty: Int

}

struct는 값 유형이므로 전달 될 때 복사되므로 스택에 할당됩니다. 이것은 구조체를 클래스보다 효율적으로 만든다. 그러나 identity 나 reference semantics의 개념이 필요하다면 구조체는 그러한 것들을 제공 할 수 없다.

문자열 인 Strings 및 클래스 속성에 대한 경고

구조체는 일반적으로 클래스보다 낫지 만, 클래스 인 속성을 가진 구조체는주의해야합니다.

struct MyStruct {

    let myProperty: MyClass

}

여기에서는 참조 횟수 및 기타 요인으로 인해 성능이 클래스와 유사합니다. 또한 구조체의 둘 이상의 속성이 클래스 인 경우 구조체가 클래스 인 경우보다 성능에 미치는 영향이 훨씬 더 클 수 있습니다.

또한 String은 구조체이지만 내부적으로는 힙에 문자를 저장하므로 대부분의 구조체보다 비쌉니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow