나만의 공부 노트
FS3강 정리 본문
Instruments
프로그램을 프로파일해보자!
프로파일이란 프로그램의 다양한 상태들을 모두 표현한다는 의미입니다.
cpu 할당량, 메모리 누수, 디스크 접근 등등 다양한 상태를 볼 수 있습니다.
옛날 옛적 호랑이가 담배피던 시절...
당시 개발자들은 OS가 다양한 리소스들(Disk, Memory, Processes 등등)을 어떻게 할당하는지, 누가 요청하는지, 메모리 누수가 있는지 등을 이해하고 싶었습니다.
하지만 갈수록 코드의 복잡성이 높아지다보니(멀티 쓰레딩, 파일 시스템 등등), 점점 분석하는데 더 많은 시간이 필요해졌습니다.
결국, DTrace라는 것을 만들어 이와 같은 문제를 해결할 수 있었습니다.
하지만 처음 프로그래밍을 접하거나 익숙하지 않은 사람들에게는 적절하지 못한 GUI라(ASCII로 콘솔창에 출력..) 진입 장벽이 높습니다.
인스트루먼츠의 등장
Dtrace위에서 동작하며 사용하기 쉬운 GUI입니다.
가장 큰 차이는 Dtrace는 여러가지 것들을 하나의 윈도우에서 하지 못하지만 인스트루먼츠에서는 가능합니다.(GUI이기 때문입니다.)
인스트루먼츠에서 여러 항목이 존재하고, 각 항목을 선택하면 인스트루먼츠는 해당 하위 모듈을 가져와 그것에 집중합니다.
*Xcode에서 윈도우 메뉴->Profile 항목(Command+I)에서 실행할 수 있습니다.
이 중에서 가장 많이 쓰이는 항목인 CPU와 관련된 [Activity Monitor, Time Profiler], 메모리와 간련된 [Allocations, Leaks] 를 알아보도록 하겠습니다.(보통 CPU 관련 항목은 파란색, 메모리 관련 항목은 주황색입니다.)
*트레이스(인스트루먼츠 기록)를 저장할 수도 있습니다.

기본적인 화면 구성은 다음과 같습니다.

Activity Monitor
어디에서 얼마나 CPU가 사용되는지 확인할 수 있습니다.
깊고 자세한 정보를 주는 것이 아니라 하이 레벨의 정보(스레드 수, cpu 차지율 등과 같은 기본적인 통계)만 줍니다.
Time Profiler
CPU가 개발자가 의도한 계산을 하는데 얼마만큼의 시간을 사용하는지 확인할 수 있습니다.
특히, 아래의 Call Tree 항목에서 Hide System Libraries를 체크하면 앱의 함수들로만 호출 구조를 볼 수 있습니다.
각각의 함수가 총 몇퍼센트의 시간을 사용했는지 보여주며, 해당 함수를 클릭하면 코드 레벨의 퍼센트를 볼 수도 있습니다.
Allocations
메모리가 어떤식으로 할당되어 동작하는지 확인할 수 있습니다.
네비게이션을 이동하면 힙 영역의 메모리 사용량이 변화하는 것을 볼 수 있습니다.
자세한 정보는 얻을 수 없으며, 아래의 Leaks 항목을 통해 세부 정보를 얻을 수 있습니다.
Leaks
메모리 누수가 일어나는 곳을 파악하고, 수정 가능하도록 합니다.
Leaks -> Cycles & Roots 항목을 선택한다면 상호 참조가 발생하는 구간의 모습과 변수 이름을 알 수 있습니다.
 
                   
                  