본문 바로가기

iOS/Swift

(3)
[WWDC2024] Swift의 성능 살펴보기 (Explore Swift performance) 본 글은 제가 https://developer.apple.com/videos/play/wwdc2024/10217/ 영상을 보고 느낀 점을 정리한 내용입니다 초입C언어 개발자는 대부분 코드를 보면 성능을 직관적으로 알 수 있다.malloc, 지역변수 등이 어떻게 동작될지 보이기 때문이다.하지만 Swift는 그렇지 않다.  C, Swift 두 언어 모두 개발해본 입장으로 이 부분은 명확하다. C에서는 코드가 내부적으로 어떻게 동작할지 보인다.공통점을 찾자면 swift, C언어 둘다  llvm을 기반으로 기계어로 번역되기 때문에 java에 비해 성능적인우위가 있다.반면에 Swift는 안전성, 유저 편의를 위해 추상화가 되어있으므로 내부적으로 어떻게 동작되는지 추론하기가 더 힘들다.https://demian-d..
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등을 프로그래머가 직접 다루는 것이 아닌 변수, 배열, 객체, 함수 등으로 기계 언어를 추상화함으로써 효율적인 코드 작성이 가능해집니다. 앞서 상당히 ..