iOS 캠프 TIL - 2021.03.01 월

Updated:

캠프 공지

  • 공지 - 수요일 특강: 개발자의 효율적인 문서 작성법

Play Kahoot! - 지난주 리뷰

  • 응답체인의 마지막 후보는? Application Delegate
  • UIEvent의 종류가 아닌것은? flip
    • filp <- 아님
    • motion(shake)
    • remoteControl
    • presses

Understanding Swift Performance - 재르시(이재성) 특강

재르시 특강에서 많은 내용을 다뤘지만 아직 이해되는 내용은 아래 뿐이다. 추후 다시 녹화영상을 보고 정리하며 다시 학습해야겠다.

Array

  • reverse(): O(n)
    • 현재 배열을 뒤집음
    • reversed() 에 비해 느리지만 공간을 덜 차지
  • reversed(): O(1)
    • 현재 배열을 뒤집은 또 다른 배열을 반환
    • 더 빠르지만 공간을 더 차지

디버깅용 Print는 아래처럼 처리해주어 배포버전에서는 적용않되게 하자 (설정의 Other Swift Flag에서 디버그 플래그 DEBUG로 설정해준후)

func printToConsole(message: string) {
    #if DEBUG
    print(mesage)
    #endif
}

Class

  • call by reference
  • 힙에 저장되어 비교적 느림

Struct

  • call by value(할당/전달시 값 복사)
  • 스택에 저장되어 비교적 빠름
  • class는 주소값만 복사하는 경우 메모리 주소크기 (8바이트)만 복사하면 되지만, struct는 항상 복사하니까 사이즈가 큰 배열을 함수로 값 전달을 해줄때마다 매번 복사가 되면 성능에 문제가 있지 않을까?
    • 그래서 COW(Copy On Write) 사용됨
    • 평소엔 메모리 주소값만 변경, 내무 값이 변경이 되는 경우에만 복사
    • COW를 위해서 class타입을 가지고 있음
    • 그래서 copy시 Reference Count 사용

Leave a comment