코드의 어떤 부분이 가장 자주 실행되는지 확인하는 방법은 무엇입니까?


11

수천 줄의 소스 코드에서 어떤 코드가 가장 자주 실행되고 가장 오래 걸리는지를보고 싶습니다. 이것의 목적은 최적화를위한 것입니다.

코드의 어떤 부분이 가장 자주 실행되는지 확인할 수있는 것이 최적화에 중요합니다. 그 부분은 속도 향상에 집중해야하기 때문입니다. 물론 일부 코드는 자주 실행되지만 시간이 거의 걸리지 않으므로 코드가 가장 오래 걸리는 것을 확인할 수 있어야합니다.

두 세계의 최고 점은 코드가 실행되는 모든 시간을 포함하여 코드 조각에 걸리는 시간을 더하는 프로그램 일 것입니다 (따라서 코드 전체의 속도를 늦추는 것이 무엇인지 파악하십시오). 이를위한 도구가 있습니까?


운영 체제 또는 프로그래밍 언어를 선호합니까?
Mawg에 따르면 모니카 복원은

답변:


15

찾고있는 것은 프로파일 링입니다 .

소프트웨어 엔지니어링에서 프로파일 링 ( "프로그램 프로파일 링", "소프트웨어 프로파일 링")은 예를 들어 프로그램의 공간 (메모리) 또는 시간 복잡성, 특정 명령의 사용 또는 빈도를 측정하는 동적 프로그램 분석 형식입니다. 함수 호출 기간. 프로파일 링 정보의 가장 일반적인 사용은 프로그램 최적화를 돕는 것입니다.

이러한 응용 프로그램에는 여러 가지가 있습니다. 때때로 이들은 IDE 자체에 내장되어 있습니다. netbeans ide는 프로파일 러가 내장 된 도구 중 하나 입니다. 여기에 이미지 설명을 입력하십시오

또 다른 도구는 visual vm 입니다.

여기에 이미지 설명을 입력하십시오

프로파일 러는 다른 방식으로 작업 할 수 있으며 차이점을 알고 있어야합니다. 실행중인 스레드의 스냅 샷을 작성하고 각 스레드에 대해 현재 어떤 메소드가 호출되는지 확인하는 방법은 1 초마다 한 번입니다. 이것은 거기에있는 것의 샘플링을 사용합니다.

다른 방법은 시작 및 중지 시간을 다른 응용 프로그램에 다시보고 하도록 Java 바이트 코드계측하는 것 입니다.

숙련 된 Java에게는 프로파일 러 작성이 그리 어렵지 않습니다. IBM은 자신의 프로파일 러 작성 (소스 코드 사용)에 대한 기사 를 보유하고 있습니다. 이것은 Java Interactive Profiler를 기반으로합니다 .

무료 및 상업용 (프로파일 러가 실행중인 JVM 인스턴스에 연결되어 특정 방법이 예상 런타임을 초과 할 때 사용자에게 다시보고 할 수있는 방법 (이메일 또는 다른 알림)에 대한 프로파일 러)이 있습니까? 웹 요청이 너무 오래 걸렸을 때 다시보고하는 프로그램-나중에 검사하기 위해 해당 요청에 대한 기록 프로필을 저장 했습니까?) 당신은 당신이 그들을 찾기 시작하고 거기에서 가려고 무엇을 알고 있어야합니다.

프로파일 러를 확보 한 후에는 프로파일 링 결과해석해야합니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.