[Instruments 맛보기] SwiftUI 성능 최적화
·
iOS/Instruments
🏁 학습할 내용SwiftUI Istruments 구성1차 개선하기2차 개선하기실제 그래프 살펴보기 📂 SwiftUI Instruments 구성1️⃣ Update Groups SwiftUI가 작업을 수행하면, 표시된다.성능을 떨어트리는 원인이 SwiftUI 관련 코드인지, 확인할 때 볼 수 있다. 아래 사진에서 Time Profiler의 CPU 사용량에서 높은 수치를 나타낼 때, Update Groups이 비어있는 것을 볼 수 있다. 해석하면, CPU 사용량의 원인은 SwiftUI 외부에 있을 가능성이 높다. 2️⃣ Long View Body UpdatesSwiftUI View의 body 속성 실행시간에 대한 트랙이다.3️⃣ Long Representable UpdatesSwiftUI에서 Represe..
[Instruments 맛보기] Swift Concurrency 시각화 및 최적화하기
·
iOS/Instruments
🏁 학습할 내용예제 코드의 문제 파악하기Instruments 보며, 원인 프로파일링예제를 통한 코드 개선해보기😂 예제코드@MainActorclass CompressionState: ObservableObject { @Published var files: [FileStatus] = [] var logs: [String] = [] func update(url: URL, progress: Double) { if let loc = files.firstIndex(where: {$0.url == url}) { files[loc].progress = progress } } func update(url: URL, uncompres..
[Instruments 맛보기] HTTP 트래픽 분석
·
iOS/Instruments
🏁 학습할 내용기본 개념Task와 Transaction 차이Tool Tip🤷 Task와 Transaction 차이 🔨 TaskTask는 URL 로딩 시스템의 API 상호작용 방식을 나타낸다.Task는 하나 이상의 트랜잭션으로 구성된다.resume이 호출되면 작업 interval이 실행된다.taskDescription을 이용해, 의미적 이름을 지정할 수 있으며, Instruments Interval 레이블에 붙는다.taskIdentifier를 속성을 이용해, 작업 식별자를 표시할 수 있다.error로 끝날 시, 레이블에 디버깅에 유리하게 error가 표시된다. Task가 여러개의 Transaction으로 구성된 이유대표적인 예가, redirect가 될 때예를 들어 apple.com으로 접속을 시도할 ..
[Instruments 맛보기] 훌륭한 프로파일링 경험
·
iOS/Instruments
🏁 학습할 내용os_signpost(Tracing)struct to temporal data (Modeling)🚥 os_signpost ⭐️ 역할저비용 추적에 사용되는 로깅 시스템 🔷 형태swift는 begin, end, event라는 3가지 유형의 API를 제공logHanlde은 사실상 nameSpace, subsystem과 category를 지정할 수 있음static 이름과 함께 추적 지점의 논리적 구조와 계층 구조가 제공 👍 장점 동시성 환경에서도, 높은 수준으로 지원한다.시작 또는 종료 이벤트가 서로 다른 스레드여도, signpostID를 통해 이벤트를 일치시킬 수 있다. 높은 정확도의 타임스탬프가 기록된다. 비용이 저렴하다.최소한의 데이터만 저장정적 문자열 + 메타 데이터는 이진 텍스..
[Instruments 맛보기] 배터리 수명 및 성능 향상시키기
·
iOS/Instruments
🏁 학습할 내용베터리 수명 지표MetricKit성능 지표🔋배터리 수명 지표 중요한 몇가지 지표만 설명됨프로세싱 지표CPU 및 GPU 시간예상치 못한 랜더링퓨처의 알고리즘위치 지표누적 사용량정확도 버킷백그라운드 위치 사용량디스플레이 지표APL(Average Pixel Luminance평균 픽셀 휘도(단위 명적당 발산하는 빛의 양)밝은 색상을 많이 사용할수록, 배터리 사용량이 높아짐네트워킹 지표업로드 및 다운로드 바이트 지표연결 지표네트워크는 고에너지를 소모하는 하위 시스템🚀 성능 지표 행사용자 입력에 응답하지 않는 시간의 히스토그램정말 심각하고 중요한 지표무거운 작업을 메인 스레드에서 옮겨야함디스크필요할 때만 사용해야하는 리소스가능한 디스크 사용량을 정량화메모리Average Suspended mem..
[Instruments 맛보기] 프롤로그
·
iOS/Instruments
👋 들어가기 전 더이상 미룰 수 없다.. 회사에서 퍼포먼스를 개선했는 지, 안했는 지 판단하려고할 때, 객관적인 지표가 필요하다. 인스트러먼트 너!... 최대한 나중에 만나자 약속했지만, 내가 약속을 깼다. 이제 니가 필요해 Xcode Instruments 튜토리얼을 따라가면서, 초급딱지를 붙여보자.. Instruments 시리즈는 WWDC + tutorial을 중심으로 진행할려고한다.🏁 학습할 내용WWDC19 Getting Started with Instruments 세션 정리 Instruments란? 들어가기 전오리엔테이션에서 정곡을 찌르는 말이 있었다. 앱의 UI가 마음에 들어도, 배터리가 빨리 방전되거나, 반응성이 나쁘다면,앱 사용 경험이 전반적으로 안 좋게 기억된다.반응성은 사용자와 앱 간..