티스토리 뷰
1. Build With Timing Summary
빌드 시간을 요약하고 최적화 해준다고 함.
2. Xcode Build Setting 수정 ( TARGETS -> Build Setting 에서 검색하면 나옴 )
a) BUILD ACTIVE ARCHITECTURE ONLY
Debug: Yes
Release: No
b) COMPILATION MODE
Debug: Incremental
Release: Whole Module
c) OPTIMIZATION LEVEL
Debug: No Optimization [-Onone]
Release: Optimize for Speed [-O]
d) DEBUG INFORMATION FORMAT (DWARF)
Debug: DWARF
Release: DWARF with DSYM File
3. code siginig 수정
a) 암호화 기법 SHA-1 대신 빠른 SHA-256 으로 사용 (디버그 모드에서)
b) 빈 resourceRules.plist 생성하여 처음 해시해야하는 작업 시간 줄임
resourceRules.plist 의 코드
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>rules</key>
<dict>
<key>.*</key>
<false/>
</dict>
</dict>
</plist>
4. Pod 종속성 수정
Podfile 맨 아래에 코드 추가
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
if config.name.include?("Debug") then
config.build_settings['ONLY_ACTIVE_ARCH'] = 'YES'
config.build_settings['OTHER_SWIFT_FLAGS'] = ['$(inherited)', '-Onone']
config.build_settings['SWIFT_OPTIMIZATION_LEVEL'] = '-O'
config.build_settings['SWIFT_COMPILATION_MODE'] = 'singlefile'
end
end
end
end
5. init 타입 명시
위 이미지를 보면 UIColor를 init으로 하였는데 이러면 시간이 굉장히 소요됨
init할때 init하는 타입을 명시해주면 시간을 아주 절약할 수 있음
-> .init 대신 UIColor.init 사용
6. 시간 줄이는 code 작성
a) 변수 선언시 가능한 let 사용
b) 상속이 필요 없는 클래스의 경우 final 붙이기
c) 외부의 접근이 없는 경우 private 사용하기
d) 한줄 보다는 여러줄로 나눠서 작성하기
// Before:
let finalValue = CGFloat(collectionView.contentSize.height - (((self.viewModel as? CartViewModelV2)?.cancellationCellHeight ?? 0) + 44))
// After:
let collectionViewHeight: CGFloat = collectionView.contentSize.height
let cancellationCellHeight: CGFloat = (self.viewModel as? CartViewModelV2)?.cancellationCellHeight ?? 0
let finalValue = CGFloat(collectionViewHeight - (cancellationCellHeight + 44))
e) optional 값에 대하여 ?? 보다는 if let 사용
그 외 시간 관련 설정
7. 터미널에 이 코드를 쳐서 빌드 시간을 측정할 수 있다.
defaults write com.apple.dt.Xcode ShowBuildOperationDuration YES
그러면 이렇게 시간이 뜸
8. 시간이 오래걸리는 (e.g. 100ms이상) code line 에 warning을 띄울 수 있다.
빌드셋팅 Other Swift Flags 에 아래 코드를 추가해줍니다
-Xfrontend -warn-long-function-bodies=100
-Xfrontend -warn-long-expression-type-checking=100
이런식으로 시간이 뜸 (11826ms)
위 방법으로
3 ~ 10분 걸리던 빌드를
1분 ~ 3분까지 줄어들었네요.
너무 유용하여 정리하였습니다
출처: https://bytes.swiggy.com/build-time-optimizations-xcode-911c9c3ac8ff
- Total
- Today
- Yesterday
- 구글 타이머 어플
- swift excel read
- swift urlsession 공통화
- rag llm pdf
- swift filemanager get excel
- swift network refactoring
- swift network module
- 타이머 어플
- swift urlsession refactoring
- swift filemanager excel
- swift urlsession module
- rag 기반 llm 챗봇
- swift 자간
- rag 기반 llm
- llm csv
- focus timer 어플
- swift urlcomponent encode
- swift network 공통화
- deep timer
- google timer application
- llm pdf rag
- swift get excel
- swift 엑셀 읽기
- google timer 어플
- swift 네트워크 모듈화
- swift urlsession network module
- swift 엑셀 가져오기
- filemanager excel read
- chatgpt rag llm
- swift queryitem encode
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |