# 성능 분석 (`appletree analyze`) 성능 분석은 ```bash appletree analyze <명령줄 인자> <파일명> ``` 을 통해 실행할 수 있습니다. ## 명령줄 인자 ### `-i FILE` `--input FILE` `-i FILE` `--input FILE`을 통해 입력값을 설정할 수 있습니다. `FILE` 인자에는 입력값이 포함된 텍스트 파일을 입력해 내용이 표준 입력으로 들어가게 할 수 있습니다. ### `-C` `--uncolored` `-C` `--uncolored`를 통해 글자 색이 없는 리포트를 볼 수 있습니다. ANSI 이스케이프 코드가 작동하지 않는 텍스트 파일 등의 환경에서 글자 깨집을 방지하기 위해 사용할 수 있습니다. ### `-L` `--without-log` `-L` `--without-log`를 통해 실시간 로그를 없앨 수 있습니다. 캐리지 리턴이 작동하지 않는 파일 리다이렉션 환경에서 사용할 수 있습니다. 추후 리포트를 파일로 저장하는 기능이 추가될 예정입니다. ### `-a` `--advanced` `-a` `--advanced`를 통해 상세 분석 모드를 사용할 수 있습니다. 상세 분석 모드는 상세 통계와 작업 디렉토리 외부의 파일을 보여주고 최소 실행 시간을 5초에서 10초로 연장합니다. 이 설정은 `-T TIME` 등으로 덮어쓸 수 있습니다. `-a` `--advanced`는 `-m -e -T 10`과 동일합니다. ### `-m` `--metrics` `-m` `--metrics`로 상세 통계 내용을 볼 수 있습니다. 상세 통계로는 스택 점유율, 증폭률, 중복 스택 점유율, 스택 증폭률이 있습니다. 이 수치의 정의와 해석에 대한 내용은 [통계 수치](#통계-수치)를 확인하세요. ### `-T TIME` `--min-time TIME` `-T TIME` `--min-time TIME`으로 최소 실행 시간을 설정할 수 있습니다. 실행 시간이 최소 실행 시간 이상이 될 때까지 실행을 반복합니다. ### `-e` `--include-external` `-e` `--include-external`로 타겟 파일이 있는 디렉토리 외부의 파일에 있는 함수도 분석에 포함시킬 수 있습니다. 파이썬 내부 파일은 포함되지 않습니다. ### `-l` `--lab` `-l` `--lab`으로 실험 기능을 체험할 수 있습니다. 실험 기능에는 에러가 있을 수 있습니다. (아직 실험 기능이 없습니다.) ## 통계 수치 - 점유율 (sample%): 프로그램 총 실행 시간 대비 해당 함수 / 줄이 실행되는 시간입니다. - 스택 점유율 (culmulative%): 프로그램 총 실행 시간 대비 해당 함수 / 줄이 스택에 있는 시간입니다. - 증폭률 (magnification): 해당 함수 / 줄의 점유율 대비 스택 점유율입니다. - 다중 스택 점유율 (multi-culmilative%): 스택 점유율과 같지만 스택에 중복해서 있었을 경우 그 횟수를 스택 점유율에 곱합니다. `100%`를 넘어갈 수 있으며 이는 버그가 아닙니다. - 스택 증폭률 (stack magnification): 재귀함수를 확인하기 위해 만들어진 수치입니다. 해당 함수 / 줄의 점유율 대비 다중 스택 점유율로 계산됩니다.