2014-11-13 2 views
1

프로파일 링을 통해 1 ms의 샘플링 속도로 응용 프로그램을 실행하고 있지만 열 머리글의 의미를 이해하는 데 문제가 있습니다. 내가 자기, # 자체과 대답 here에서 셀프 %를 해독하는 데 성공 불구하고 documentation는 열 제목의 대부분에 대한 정의가 부족한 것 같다.인스트루먼트 타임 프로파일 러 열 머리글 이해

  • 총 샘플 : 이것은 내가 지금까지 무엇을 가지고 프로그램이 주어진 함수
  • 총 시간이었다 샘플 (1 밀리 초)의 총 수 : A의 소비 한 총 시간 함수 (1ms 샘플링 속도를 사용하는 전체 샘플에 해당)
  • 셀프 : 링크 된 질문에 설명되어 있지만 총 시간과 어떻게 다른가요? # SelfSelf %의 의미를 알아낼 수 있어야합니다.
  • 총 % : 총 주행 시간

열 제목의 나머지 백분율 총 샘플 (인해 1ms의 샘플링 속도 아마도) 상기 조합 보이거나 단정 . 예를 들어 총 시간이 647621ms (89.4 %) 인 함수가 있지만 자체/# Self이 있습니다.이 함수는 자주 호출되지만 실행 시간은 거의 걸리지는 않습니까? 반면에 다른 함수의 총 시간은 15559ms (2.1 %)이지만 자체/# Self은 13099입니다. 이는 자주 호출되지 않지만 완료하는 데 훨씬 오래 걸립니다. 나는 올바른 길을 가고 있는가?

답변

2

인스트루먼트의 최근 버전에는 총 샘플 열이 없지만 전체 샘플, 총 시간 및 자체의 차이점에 대해 설명하겠습니다. 이는 시간 프로파일 러가 작동하는 방식을 설명하기 때문입니다. Time Profiler (시간 프로파일 러) 장비는 호출 스택을 기본적으로 밀리 초마다 주기적으로 기록합니다. Total Samples 열은 메소드가 호출 스택에 있었던 샘플 수를 알려줍니다. Total Time 열에는 메서드가 호출 스택에 있었던 시간이 표시됩니다. Self 열은 메소드가 호출 스택의 맨 위에있는 샘플의 수를 알려줍니다. 즉, Instruments가 샘플을 기록 할 때 앱이 메소드에 있음을 의미합니다.

셀 열은 총 샘플 및 총 시간 열보다 훨씬 중요합니다. main() 함수는 애플리케이션이 실행되는 동안 호출 스택에 있기 때문에 main() 함수는 총 샘플 수와 총 시간이 길어집니다. 그러나 코코아/코코아 터치 응용 프로그램에서 main() 함수를 최적화하는 데 시간을 소비하는 것은 모든 main()이 응용 프로그램을 시작하기 때문에 시간 낭비입니다. 자기 가치가 높은 방법에 집중하십시오.

최근 악기 버전에는 실행 시간 항목이 있습니다. 열의 각 목록에는 시간과 백분율이라는 두 가지 값이 있습니다. 시간은 귀하의 질문에 총 시간에 해당합니다. 비율은 질문의 총 %에 해당합니다.

UPDATE

날 마지막 단락에서 함수의 예에 질문에 대답 보자.첫 번째 예제의 함수에서 응용 프로그램이 많은 시간을 소비하지는 않습니다 (함수 A라고합니다). 이는 자체 입력이 단지 9이기 때문에입니다. 즉, 응용 프로그램이 함수 A 안에 있었던 샘플이 9 개라는 것을 의미합니다. 시간은 기능 A가 호출하는 기능 안에서 응용 프로그램이 많은 시간을 소비했음을 의미합니다. 함수 A는 자주 호출 스택에 있지만 자주 호출 스택의 맨 위에는 없습니다.

두 번째 예제에서 응용 프로그램의 자체 입력이 13099이기 때문에 응용 프로그램은 함수 B에서 더 많은 시간을 보내고 있습니다. 응용 프로그램은 총 시간이 훨씬 짧기 때문에 함수 B가 호출하는 함수에서 많은 시간을 소비하지 않습니다 . 함수 B는 A보다 자주 호출 스택 맨 위에 있고 A보다 호출 스택이 적습니다. 응용 프로그램에 성능 문제가있는 경우 함수 B는 성능을 향상시키는 방법을 검사하는 함수가됩니다. 함수 A의 최적화는 자체 입력이 9이기 때문에 많은 도움이되지 않습니다.

+0

감사합니다. 이것은 docs보다 훨씬 더 의미가 있으며, 특히 main()에 관한 것들입니다. 그것은 또한 두 가지 기능을 가진 나의 예가 정확하게 분석된다는 것을 의미합니까? – NordCoder

+1

귀하의 질문에 대한 답을 업데이트했습니다. –

+0

감사합니다. 그건 완벽하게 요약 해주세요 :) – NordCoder