Chrome 디버거의 프로파일 러에서 "(프로그램)"이란 무엇입니까?


답변:


95

(program)등 자바 스크립트 네이티브 코드, 자원로드에서 점프를 시작하기 때문에 크롬 자체, 다른 모든 코드를 호출 트리의 루트입니다 ... 그것은 거기 어딘가에 :)

Chrome 개발자 도구 문서에서 트 리뷰의 예를 볼 수 있습니다 .


43
아-그래서 그것이 높은 퍼센트라면, 내가 할 수있는 일이 있습니까?
hvgotcodes

2
@hvgotcodes-아래의 모든 부분에 대한 비율입니다. 이제 자기 비율이 높으면 할 일이 많지 않습니다. 일반적으로 마크 업이 너무 무겁지 않은 한.
닉 Craver

1
"(프로그램)"섹션에서 코드에 액세스하는 방법을 알고 있습니까? 현재 작업중 인 프로젝트의 JavaScript 부분은 결국 거기에 있으며 디버거에 도달 할 수있는 유일한 방법은 "디버거; 코드에 들어가는 것은 쉽지 않습니다.
Jaroslav Záruba

6
나는 이것이 실제로 잘못 생각하고 @ user1009908의 대답이 맞다고 생각합니다. 루트가 아니며 기본 코드입니다. 트리 뷰 예제가 루트로 표시하지 않는다는 사실에 의해 지원됩니다.
studgeek

3
program ()의 높은 %와 관련하여 때로는 CSS 애니메이션으로 인해 CPU 사용량이 높아져 program ()에 반영됩니다. 불행히도 프로파일 러는 소스를 정확히 찾아 낼 수 없습니다.
ılǝ

31

나는 (프로그램)이 나무의 뿌리가 아니라 네이티브 코드라고 생각합니다.

이 스레드를 참조하십시오 :

https://bugs.webkit.org/show_bug.cgi?id=88446

따라서 main ()보다 시스템 호출과 더 유사합니다.

분명히 유휴 시간이 포함됩니다. 또한 (프로그램)의 일부 프로파일 링은 chrome : // profiler /


7
동의-그러나 단지 업데이트 : 더 이상 유휴 시간을 포함하지 않습니다. 그것은 현재 (유휴)로 별도로보고되고 있습니다.
Gio

15

@Nick이 말했듯이 어딘가에서 시작해야합니다.

CPU 프로파일 러 부분은 gprof와 동일한 개념을 기반으로하는 다른 많은 프로파일 러 와 같습니다 .

예를 들어, 편집 할 수있는 일부 코드에 큰 숫자 배열이 포함되어 있지 않으면 self 는 거의 쓸모없는 숫자입니다. 거의 없습니다.

총계 에는 수신자가 포함되어야하므로 더 유용합니다. 그러나 차단 시간과 실행 시간 동안 샘플을 채취하지 않으면 완전히 CPU 바인딩 프로그램을 제외하고는 여전히 쓸모가 없습니다.

이 통계는 코드 단위가 아닌 기능별로 제공됩니다. 그것은 ( 백분율에 의존 할 수 있다면 ) 함수가 비용을 많이 들인다는 의미에서, 스터 빙과 같이 어떻게 든 제로에 시간을 할애 할 수 있다면 그 백분율은 절약 할 시간이 얼마나되는지 의미합니다.

따라서 값 비싼 기능에 집중하려면 최적화 할 수있는 기능을 찾아야합니다. 그러기 위해서는 함수의 코드 라인에서 시간이 어떻게 세분화되는지 알아야합니다. 코드 단위로 비용을 지불 한 경우 해당 라인으로 직접 이동합니다.

Zoom 과 같은 라인 레벨에서보고하는 벽시계 스택 샘플러와 같은 더 나은 프로파일 러를 얻을 수 있는지 모르겠습니다 . 내가하는 방법은 다음과 같습니다 .


@ hvgotcodes : 확실하지 않습니다. 디버거에서 스택 샷을 가져 오기 때문에 사용하지 않습니다. 하지만 당신은 리눅스를 사용하고 있습니까? Zoom 시험판을받을 수 있습니까? 꽤 좋습니다.
Mike Dunlavey

@ hvgotcodes : 그렇다면 내가 제공 할 수있는 유일한 도움은 내가 의존하는 방법입니다.
Mike Dunlavey
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.