EEYatHo 앱 깎는 이야기

Xcode ) Xcode Build 빠르게하기 ( 코딩방법, 환경변수 ) - EEYatHo iOS 본문

iOS, Swift/Xcode, Xcode Error

Xcode ) Xcode Build 빠르게하기 ( 코딩방법, 환경변수 ) - EEYatHo iOS

EEYatHo 2021. 2. 22. 21:57
반응형

빌드에 있어서 영향을 줄 수 있는 요소는 3가지가 있다.

첫번째, 코드에 의한 영향

두번째, 빌드 환경에 의한 영향

세번째, 빌드 자동화에 의한 영향



혼자 상상한 비유.. 🤔

첫번째, 코드에 의한 영향 => 차의 성능을 좋게하는 것.

두번째, 빌드 환경에 의한 영향 => 차가 지나가는 길을 좋게하는 것.

세번째, 빌드 자동화에 의한 영향 => 도로의 교통체중을 없애는 것.

 


첫번째, 코드에 의한 영향

 

코드를 짤 때, 빌드시 컴파일러가 고려하는 경우의 수를 줄이면, 빌드 속도가 빨라진다.

  1. 프로퍼티 선언시 var 보다는 let을 사용

  2. 타입을 명시 (타입 추론을 안하도록)
    let a = 0 < let a: Int = 0

  3. 타이트한 접근 제한자
    open < public < internal < fileprivate < private

  4. 상속이나 오버라이딩이 필요없는 클래스나 프로퍼티에 final 사용
    final class testClass { ... }
    final func testFunc() { ... }

    * Method Inlining
    final이나 private로 선언된 메소드나 프로퍼티는, 컴파일 시간에 static하게 처리되기에,
    런타임에 주소 탐색 시간을 절약하여 성능에 큰 도움을 준다.


  5. 가능한 참조타입(Class) 보다는, 값타입(Struct)를 사용

    * 참조 타입
    힙을 할당하여, 힙에서 빈곳을 찾는 시간 + thread safe를 위한 동기화 시간이 필요하며, reference count가 존재

    * 값 타입
    단순히 스택포인터 변수를 조절하는 시간이 필요하며, refenrence count 없음


  6. 비트 연산자, 오버플로 연산자를 사용하면 오버플로 체크 시간을 아낄 수 있다.
    비트 연산자 : &, |, <<, >>
    오버플로 연산자 : &+, &-, &*
    (오버플로가 안날거라는 확신이 있을때만 사용하기)

 


두번째, 빌드 환경에 의한 영향

 

Xcode는 많은 빌드 환경변수를 제공해주고, 그 중 빌드 속도에 관한 설정으로 6가지가 있다


1. Xcode New Build System ( Xcode 9 ~ )

애플이 열심히 최적화해놓은 새로운 빌드시스템을 사용

Xcode New Build System



2. Architecture Impact

Yes로 설정할 경우, x64 x32 등 모든 아키텍처에 맞게 빌드하지 않고,

현재 자신의 아키텍처에만 맞도록 빌드를 수행

Architecture Impact



3. Compliation mode

Incremental로 설정할 경우, 수정한 파일만 컴파일

Compliation mode



4. Optimization Level

"빌드 속도"와 "디버스 정보 안정성" 사이에서 자신에게 맞게 설정할 수 있다.

빠를 수록, 디버그시 제공하는 정보의 양과 질이 떨어짐

Optimization Level



5. 사용하는 스레드 수 늘리기

기본적으로 Xcode는 CPU 코어 수 만큼의 스레드를 사용하는데, 이를 늘릴 수 있다.

 

자기 환경의 코어 수 확인하기

sysctl -n hw.ncpu

사용하는 스레드 수 수정하기

defaults write com.apple.Xcode PBXNumberOfParallelBuildSubtasks [숫자]

 

( 커맨드라인 = cmd = 쉘에 입력하면 되고, 저는 4에서 8로 늘렸슴담 )



6. dSYM Impact

디버그로 빌드할 시, 충돌 보고서 파일(dSYM)은 필요없으니 빼버린다.

dSYM Impact

 

Comments