본문 바로가기

iOS/Swift

(2)
iOS) Swift의 Time complexity에 관한 고찰 API의 시간 복잡도(Time complexity)에 대해 이해하고 있으면 보다 성능이 우수한 앱을 만들 수 있습니다. 이에 대해서 Swift의 Collection Types의 Method나 Property의 Time complexity에 대해 정리해 보겠습니다. mutating 하는 Method는 Copy on Write를 고려해주셔야 합니다. 기준은 최대한 공식문서를 참고했습니다. 혹시 틀린 점이 있다면 댓글로 알려주시면 감사하겠습니다. Array append(_ newElement: Element) 평균 시간 복잡도는 O(1)입니다. 최악의 시간복잡도 O(N)입니다. 최악의 상황은 메모리를 재할당 해야 할 때입니다.(C++ Vector와 유사, exponential로 크기가 증가합니다.) appen..
iOS) Swift에 대한 고찰 iOS 개발자라면 익숙한 Swift에 대해서 알아보려 합니다. Swift는 Apple WWDC 2014에서 공개된 언어입니다. 그전까지는 Objective-C가 애플의 표준 프로그래밍 언어였습니다. Objective-C와의 비교는 나중에 다른 글에서 다뤄보겠습니다. Swift는 safety, performance, design patterns를 고려한 상당히 높은 high-level 언어입니다. 여기서 high-level 언어는 인간 친화적인 언어, 기계어에서 높은 수준의 추상화된 언어를 의미합니다. 어셈블리처럼 레지스터, 메모리 주소, call stack등을 프로그래머가 직접 다루는 것이 아닌 변수, 배열, 객체, 함수 등으로 기계 언어를 추상화함으로써 효율적인 코드 작성이 가능해집니다. 앞서 상당히 ..