2015-01-22 1 views
6

설정 : 여러 모듈의 상호 작용을 포함하여 합리적으로 상세한 소프트웨어 (줄리아에서)가 있다고 가정 해 봅니다. 나는 그것이해야하는 것보다 느리게 달리고있는 것처럼 느낀다. 일반적으로 first culprit to check for is type unstable functions입니다. 즉, 컴파일러가 미리 출력 유형을 결정할 수없는 함수입니다.Julia에서 유형이 불안정한 함수를 감지하는 방법

질문 : 어떻게 이러한 유형의 불안정한 기능을 감지 할 수 있습니까?

현재 수행중인 작업 : 저는 프로파일 링 도구를 사용합니다. 병목 현상을 감지하기 위해 @tholy의 ProfileView.jl 패키지를 사용합니다. 이러한 유형의 불안정한 함수가 과도한 런타임으로 인해 여기에 표시된다는 가정하에 병목 현상을 감지합니다. 그러나 루틴을 실행 한 후 컴파일러가 미리 출력 유형을 결정할 수없는 함수 목록을 뱉어내는 일종의 디버깅 도구가 정말 좋을 것입니다. 이것이 가능한가?

답변

6

profiler가 말하는 비트에 TypeCheck.jl을 시도해 볼 수 있습니다.

줄리아 0.4는 @code_warntype도있다.

+0

허. 어떻게 든 TypeCheck 패키지를 전혀 알지 못했고 검색 결과에 나타나지도 않았습니다. 그게 정확히 내가 한 후 :-) 많은 감사합니다! –

4

IainDunning의 훌륭한 제안 외에도 줄리아를 --track-allocation=user과 함께 실행하고 Coverage 패키지에서 analyze_malloc으로 결과를 분석하는 것은 빠른 단계의 개요를 빠르게 얻을 수있는 좋은 방법입니다. 원칙적으로 타입 - 불안정성은 메모리 할당을 유발하기 때문에 예상치 못한 큰 할당을 가진 코드 라인을 찾는 것이 가장 불안정한 타입의 불안정한 인스턴스를 찾는 좋은 방법입니다.

track-allocationin the manual 및 더 많은 성능 분석 옵션 에 대한 자세한 정보를 찾을 수 있습니다.

+0

매우 흥미 롭습니다. 많은 감사합니다. –

관련 문제