명시된 목표는 응용 프로그램 성능 (로딩 시간 등)을 개선하는 것입니다. 다른 언어 (C#, C++, C 등)로 비슷한 문제가 있습니다. 타이밍에 그다지 집중하지 말 것을 제안합니다. Flex 프로필러에서 제공하는 측정 값이 아니라 느린 속도로 호출 스택의 샘플을 추출하는 데 사용합니다. 요약을 다루지 말고 스택 샘플을 면밀히 검토하십시오. 이것은 당신에게 특히 정확한 시간 측정을 제공하지 않기 때문에 당신의 마음을 조금 구부릴 수 있습니다. 무엇을 말할 것인가는 입니다. 코드 라인을에 집중해야만 스피드 업을 얻을 수 있으며, 스피드 업이 얼마나 기대되는지를 대략적으로 알 수 있습니다. 속도 향상의 정확한 양을 얻으려면 나중에 시간을 할 수 있습니다. (스톱워치 만 사용합니다.로드 시간이 2 분에서 10 초로 단축되는 경우 타이밍은 첨단 기술 문제가 아닙니다.)
(이것이 작동하는 방법/이유가 궁금하신 분은 왜냐하면 프로그램의 속도가 느려지는 이유는 대부분 메소드 호출에 의해 수행되도록 요청하고 있기 때문에 실행을 너무 많이하지 않기 때문입니다. 이러한 메소드 호출에 소요되는 시간 동안, 스택에 노출되어 앉아 쉽게 볼 수 있습니다. 예를 들어 60 %의 비용이 소요되는 코드 라인이 있고 5 개의 스택 샘플을 가져 오는 경우 3 개의 샘플에 플러스가 표시됩니다 1에서 100 만 번 실행되는지 여부에 관계없이 대략 1에서 1을 뺀 값이됩니다. 따라서 여러 스택에 나타나는 모든 행이 최적화 대상이 될 수 있으며 최적화 대상은 여러 스택 샘플에 나타납니다. 충분히.
어려운 부분은 관련이없는 모든 프로파일 링 결과에주의를 기울이지 않는 것을 배우는 것입니다. 방법에 대한 평균 또는 전체 밀리 초는 부적합합니다. 호출 횟수는 부적합합니다. "셀프 타임"은 부적합합니다. 콜 그래프는 부적합합니다. 일부 패키지는 재귀에 대해 걱정합니다. CPU 바인딩 대 I/O 바인딩 - 관련성이 없습니다. 무엇 관련이 있습니다은 개별 코드 줄이 나타나는 스택 샘플의 비율입니다.)
ADDED : 이렇게하면 "확대 효과"가 나타납니다. A와 B의 두 가지 독립적 인 성능 문제 (A는 50 %, B는 25 % 비용)가 있다고 가정합니다. A를 수정하면 총 시간이 50 % 감소하므로 B가 남은 시간의 50 %를 차지하므로 쉽게 찾을 수 있습니다. 반면에 B를 먼저 수정하면 시간이 25 % 감소하므로 A가 67 %로 확대됩니다. 수정 한 문제로 인해 다른 문제가 더 커 보이기 때문에 더 이상 문제를 해결할 수 없을 때까지 계속 진행할 수 있습니다.
고마워요, 고맙습니다. 이것이 프로파일 링의 기초 인 실제로 찾고 있던 것입니다. 나는 이것을 시도하고 다시 당신에게 돌아갈 것입니다. 감사합니다. 마이크. – Ashine