iOS 캠프 TIL - 2021.03.01 월
캠프 공지
- 공지 - 수요일 특강: 개발자의 효율적인 문서 작성법
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