반응형
ruby-prof 출력 이해
내 프로그램 중 하나에서 ruby-profiler를 실행했습니다. 각 필드가 의미하는 바를 파악하려고합니다. 모든 것이 CPU 시간 (벽시계 시간이 아님)이라고 생각합니다. 환상적입니다. "---"가 무엇을 의미하는지 이해하고 싶습니다. 거기에 일종의 스택 정보가 있습니까? 통화 a / b는 무엇을 의미합니까?
Thread ID: 81980260
Total Time: 0.28
%total %self total self wait child calls Name
--------------------------------------------------------------------------------
0.28 0.00 0.00 0.28 5/6 FrameParser#receive_data
100.00% 0.00% 0.28 0.00 0.00 0.28 6 FrameParser#read_frames
0.28 0.00 0.00 0.28 4/4 ChatServerClient#receive_frame
0.00 0.00 0.00 0.00 5/47 Fixnum#+
0.00 0.00 0.00 0.00 1/2 DebugServer#receive_frame
0.00 0.00 0.00 0.00 10/29 String#[]
0.00 0.00 0.00 0.00 10/21 <Class::Range>#allocate
0.00 0.00 0.00 0.00 10/71 String#index
--------------------------------------------------------------------------------
100.00% 0.00% 0.28 0.00 0.00 0.28 5 FrameParser#receive_data
0.28 0.00 0.00 0.28 5/6 FrameParser#read_frames
0.00 0.00 0.00 0.00 5/16 ActiveSupport::CoreExtensions::String::OutputSafety#add_with_safety
--------------------------------------------------------------------------------
0.28 0.00 0.00 0.28 4/4 FrameParser#read_frames
100.00% 0.00% 0.28 0.00 0.00 0.28 4 ChatServerClient#receive_frame
0.28 0.00 0.00 0.28 4/6 <Class::Lal>#safe_call
--------------------------------------------------------------------------------
0.00 0.00 0.00 0.00 1/6 <Class::Lal>#safe_call
0.00 0.00 0.00 0.00 1/6 DebugServer#receive_frame
0.28 0.00 0.00 0.28 4/6 ChatServerClient#receive_frame
100.00% 0.00% 0.28 0.00 0.00 0.28 6 <Class::Lal>#safe_call
0.21 0.00 0.00 0.21 2/4 ChatUserFunction#register
0.06 0.00 0.00 0.06 2/2 ChatUserFunction#packet
0.01 0.00 0.00 0.01 4/130 Class#new
0.00 0.00 0.00 0.00 1/1 DebugServer#profile_stop
0.00 0.00 0.00 0.00 1/33 String#==
0.00 0.00 0.00 0.00 1/6 <Class::Lal>#safe_call
0.00 0.00 0.00 0.00 5/5 JSON#parse
0.00 0.00 0.00 0.00 5/8 <Class::Log>#log
0.00 0.00 0.00 0.00 5/5 String#strip!
--------------------------------------------------------------------------------
ruby-prof 출력의 각 섹션은 특정 기능의 검사로 나뉩니다. 예를 들어, 출력의 첫 번째 섹션을보십시오. FrameParser의 read_frames 메소드가 초점이며 기본적으로 다음과 같습니다.
- 프로파일 링 된 실행 시간의 100 %가 FrameParser # read_frames 내부에서 소비되었습니다.
- FrameParser # read_frames가 6 번 호출되었습니다.
- 6 개의 read_frame 호출 중 5 개는 FrameParser # receive_data에서 왔으며 이는 실행 시간의 100 %를 차지했습니다 (read_frames 라인 위의 라인).
- read_frames (첫 번째 섹션 내) 메서드 아래의 줄은 FrameParser # read_frames가 호출하는 모든 메서드입니다 (이것이 코드 인 것처럼 보이므로 알고 있어야합니다). 총 호출 read_frames가 담당하는 메서드 수 (a / b 통화 열) 및 해당 통화에 걸린 시간. 실행 시간을 가장 많이 차지한 항목에 따라 정렬됩니다. 귀하의 경우에는 ChatServer 클래스의 receive_frame 메서드입니다.
- 그런 다음 receive_frames (receive_frame의 '100 %'라인을 중심으로 2, 가운데)에 초점을 맞춘 섹션을보고 성능이 어떻게 분류되는지 확인할 수 있습니다. 각 섹션은 동일한 방식으로 설정되며 일반적으로 가장 많은 시간이 소요 된 후속 함수 호출이 다음 섹션의 초점입니다. ruby-prof는 전체 호출 스택을 통해이 작업을 계속합니다. 해결하려는 병목 현상을 찾을 때까지 원하는만큼 깊이 들어갈 수 있습니다.
참조 URL : https://stackoverflow.com/questions/5366553/understanding-ruby-prof-output
반응형
'Programing' 카테고리의 다른 글
C ++에서 const 오버로딩을 사용하는 것은 무엇입니까? (0) | 2020.12.25 |
---|---|
Eclipse에서 줄 높이 / 줄 간격을 어떻게 변경할 수 있습니까? (0) | 2020.12.25 |
TFS : 소스 제어에서 이름으로 파일 검색 (0) | 2020.12.25 |
MongoDB upsert가 삽입 또는 업데이트를 수행했는지 확인 (0) | 2020.12.25 |
ADT 22.3 (android 4.4)- '씬 생성 후 #init ()를 호출해야 함'오류가 발생 함 (0) | 2020.12.25 |