swift
swift

swift는 생긴지 얼마 안된 언어지만 iOS, macOS 개발을 위해서는 어쩔수 없이 사용하게 되는데요. 개발을 하다보면 제일 문제되는건 swift 언어 컴파일 시간 문제입니다.

Xcode 에서 아이폰 개발을 하다보면 이전에 Obj-C 사용하던것 보다 컴파일이 느려서 시뮬레이터로 실행하면서 코드 수정하는 전체 프로세스를 느리게 만들정도죠.

그래서 swift로 개발할때는 고려해야 될게 생겼습니다. 컴파일러 친화적으로 코딩하기! ㅜㅜ 컴파일러의 컴파일 속도를 올려주는 팁들이 몇개 있는데 이걸 잘지키면 컴파일 속도가 빨라집니다.

제가 참고로한 2개의 글에 자세히 설명되어 있으니 읽어보시기를 추천드립니다.

대표적인거 몇개 소개해드리겠습니다.

rightView?.bounds.width ?? 0

위와 같이 값이 nil 이면 기본값을 제공하는 연산자는 코드 가독성도 좋아서 많이 사용하죠 ~ 그런데 이걸 아래와 같이 풀어 쓴다면 컴파일 속도가 얼마나 빨라질까요?

var width: CGFloat = 0
if let rightView = rightView {
 width = rightView.bounds.width
}

빌드 타임이 99.4% 빨라졌다네요… 5238ms 에서 32.4ms 로 빨라져요. (위의 예제는 벤치마크 코드의 일부라서 실제로 위의 코드로 하면 격차가 줄어들수도 있어요. 전체 코드는 링크 참고)

이런코드 100번 쓰면 5초 * 100 = 500초… 8분정도 느려지는거네요. 8분을 아끼기 위해서 1줄 코드를 4줄짜리로 바꾸면 100줄 짜리 코드가 400줄 될거구요.

이외에도 아래와 같은 것들이 있어요

  • 배열에 값을 추가할때 + 연산자 대신 append를 사용하면 97.9% 속도 향상!(1250.3ms -> 25.5ms)
  • 삼항 연산자를 사용하지 않으면 빌드타임 92.9% 향상!(239ms -> 16.9ms)

이런…. 다들 코드 가독성 향상이나 편리함을 이유로 코드에서 자주 사용하는것들이네요…

Swift 3에서는 그래도 이런것들이 조금 개선되었다고 합니다.

자 여러분의 선택은? 가독성을 포기하고 1줄코드를  3줄씩 늘려서 쓰고 컴파일 속도를 얻을것인가? 컴파일 속도를 포기하고 가독성이나 편리함을 추구할것인가요? 다른 옵션으로 iOS 8 지원을 포기하고 swift 3으로 넘어가는 선택도 있겠네요. 아니면 컴퓨터를 맥프로(맥북프로 아닙니다… 쓰레기통 맥 말하는거에요) 최고급 사양으로 바꾸는 선택지도 있겠네요 ㅎㅎ

저는 컴파일 속도를 포기했습니다… swift 3에 컴퓨터 사양 높이는걸 고려하겠어요

옛날 옛적에 ~ C로 코딩할때는 컴파일러 속도를 빠르게 하기위해 코딩 습관도 컴파일러 친화적으로 하고 컴파일러가 새로 나올때마다 공짜점심을 먹었다는 이야기를 들었는데… 요즘 세상에 이런 이야기를 할줄은 몰랐네요 ㅜㅜ 개발자들을 위해 Swift 컴파일러가 좀더 빠른 속도로 개선되었으면 좋겠습니다.

참고 자료

게시글의 아마존, iTunes 링크들을 통해 구매를 하시면 제휴(Affiliate) 프로그램에 의해 저에게 일정 금액이 적립될 수 있습니다. ^_____^