Replies: 3 comments
-
주로 메모리 릭을 확인할 때 사용했는데, 매우 다양한 기능들이 있었군요 !! |
Beta Was this translation helpful? Give feedback.
0 replies
-
코드 리팩토링을 하면서 Instrument를 사용해보려고 관련 정보를 찾아보고있었는데 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
내가 만든 앱이 버벅거리거나, 앱을 구동하면 핸드폰이 너무 뜨거워지나요? Instrument는 구현과 함께, 또는 그 이후에 최적화를 통해 이런 문제를 해결할 수 있도록 돕는 도구가 있습니다.
이 글에서는 Paul Hudson 씨의 예제와 기본 개념을 버무려 Instruments의 기본적인 기능에 대해 정리하였습니다. 기본적인 개념을 익히고, 이후 다양한 instruments들을 체험해보시길 기대합니다(저도 알려주세요👀)
About Instruments
Instruments 여는 방법
Xcode
Dock
Launch Terminal (in
/Applications/Utilities/
).Run the following command:
open /Applications/Xcode.app/Contents/Applications/Instruments.app
우리 앱의 View는 잘 지내고 있을까요?
Instrument UI를 익히고 싶다면 아래 아티클을 참고해주세요 :)
[Xcode] Instruments (1) - Tool
SwiftUI Instrument
실행
View Body
위에 이미지에서 MainView는 그리는 횟수에 비해 너무 많은 Avg Duration을 가지고 있어서 심각한 상태입니다😱 (많이 버벅거리더라구요..)
View Property
위 타임라인의 피크를 찍은 부분은 SettingView에서 토클을 반복해서 on/off를 점검했던 부분입니다. 그 부분에서 SettingView가 여러번 렌더가 되었군요. 근데 평균시간이 812.55마이크로초가 소요되어서, 최적화가 필요해보이네요! 👀
Core Animation Commits
Core Animation은 그래픽 렌더링 및 애니메이션 인프라로, 앱의 뷰와 시각적 애니메이션 작업을 돕는 기술입니다. 우리가 애니메이션을 할 때 처음과 끝의 상태만 설정하면, Core Animation은 그 정보를 받아서 자동으로 내장된 그래픽 하드웨어에 그리는 작업을 넘겨서 렌더링 속도를 높임으로 CPU에 부담을 주지 않고 앱 속도 저하를 방지할 수 있습니다.
Core Animation이 더 궁금하다면
Time Profiler
왼쪽 패널에는 만들어진 모든 Thread를 확인할 수 있습니다.
오른쪽 패널에는 가장 오랜 시간이 걸린 코드를 보여줍니다. 여기서 흰색으로 하이라이트 된 부분이 개발자가 작성한 코드이고 나머지는 시스템 코드입니다.
하단에 Call Tree에서 Hide System Libraries를 토글하면 개발자가 작성한 부분에 대해서만 확인할 수 있습니다.
Invert Call Tree를 토글하면 상세한 코드부터 확인할 수 있습니다. 시간이 오래걸린 부분을 더블클릭하면 문제가 있는 코드를 바로 확인할 수 있습니다.
정리하며
References
instruments
How to use Instruments to profile your SwiftUI code and identify slow layouts - a free SwiftUI by Example tutorial
Core Animation
About Core Animation
다른 Instrument들도 체험해보시고, 어떤 기능들이 있는지 댓글로 남겨주시면 서로 Instrument로 앱의 성능을 최적화하는 능력을 키울 수 있을 것 같습니다 :)
Beta Was this translation helpful? Give feedback.
All reactions