분석기 성능 문제 해결하기
분석기 성능 문제 해결하기
Dart 또는 Flutter IDE에서 흔히 나타나는 Dart 분석 서버(analyzer) 성능 문제를 진단하고 해결하는 방법을 안내하는 가이드예요.
본문
이 가이드는 Dart나 Flutter IDE에서 흔히 발생하는 Dart 분석 서버 성능 문제를 진단하고 해결하는 데 도움을 줘요.
알려진 성능 문제
몇 가지 흔한 문제는 Dart 분석 서버(analyzer)의 성능을 크게 떨어뜨려요. 개발 환경에 영향을 주는지 아래 문제들을 확인해 보세요.
Windows의 보안 소프트웨어
Windows 시스템에서 Windows Defender(또는 다른 실시간 보안 소프트웨어)가 활성화되어 있으면 파일 읽기 시간이 느려져 analyzer 성능에 영향을 줄 수 있어요. analyzer는 파일을 자주 읽고, 지속적인 스캔이 지연을 발생시킬 수 있죠. 이를 완화하려면 analyzer가 읽는 디렉터리에 대한 제외를 설정할 수 있어요.
경고: 보안 스캔에서 디렉터리를 제외하면 바이러스 백신 소프트웨어가 제공하는 보호가 약해질 수 있어요. 주의해서 진행하세요.
제외를 설정하려면 다음 디렉터리를 포함하세요.
- 분석 서버의 캐시 디렉터리:
%LOCALAPPDATA%\.dartServer - pub이 다운로드한 패키지 디렉터리:
%LOCALAPPDATA%\Pub\Cache - 애플리케이션 코드가 들어 있는 그 밖의 모든 디렉터리
파일 I/O 성능을 개선하는 또 다른 방법으로 dev drive 설정을 고려해 보세요.
심볼릭 링크
패키지 디렉터리에 같은 디렉터리 안이나 부모 디렉터리를 가리키는 심볼릭 링크가 있으면 analyzer 같은 Dart 도구에서 성능 문제가 발생할 수 있어요.
상태: Dart 팀이 이 문제에 대한 수정을 적극적으로 작업 중이에요.
해결 방법: 현재 알려진 해결 방법은 없어요.
알 수 없는 문제 보고하기
알려진 문제가 상황에 맞지 않는 것 같다면 Dart SDK 이슈 트래커에 이슈를 열어 주세요. 정보를 많이 제공할수록 팀이 문제를 진단하고 고치는 속도가 빨라져요.
재현 단계 포함하기
이슈에 관찰한 동작을 재현하는 상세한 단계를 제공해 주세요.
- 오픈소스 프로젝트에서 작업 중이라면 코드를 다운로드하는 방법을 포함하세요.
- 코드를 공유할 수 없다면 작고 독립적인 재현 케이스를 만드세요.
- 둘 다 할 수 없다면 이슈에 그렇게 명시해 주세요.
성능 데이터 제공하기
문제가 성능과 관련된 경우 성능 데이터를 제공하면 매우 도움이 돼요. 분석 서버의 진단 페이지를 통해 데이터를 수집할 수 있어요.
- Analyzer Diagnostics 페이지 열기:
- VS Code 사용 시: View > Command Palette를 클릭하고
Dart: Open Analyzer Diagnostics를 입력해 선택하세요. - IntelliJ / Android Studio 사용 시: Dart Analysis 도구 창을 열고 설정 아이콘을 클릭한 다음 View analyzer diagnostics를 선택하세요.
- VS Code 사용 시: View > Command Palette를 클릭하고
- 보고서 수집하기: 열린 브라우저 페이지에서 상단 배너의 Collect Report를 클릭한 뒤, 느린 동작을 유발하는 작업을 수행하고 Download report 링크를 클릭하세요.
- 보고서를 이슈에 첨부하세요.
참고: 보고서에 개인 정보나 독점 정보가 포함되지는 않아야 하지만, 제출 전에 검토해 보세요.
계측 로그 캡처하기
경우에 따라 계측(instrumentation) 로그가 문제 진단에 추가적인 세부 정보를 제공할 수 있어요.
이 로그를 캡처하려면:
- VS Code: analyzer 계측 로그 캡처에 대한 지침을 따르세요.
- IntelliJ / Android Studio: analyzer 계측 지침을 따르세요.
GitHub 이슈에 로그를 첨부하기 전에 개인 정보, 민감한 정보, 독점 정보가 포함되지 않도록 주의 깊게 검토하세요.
더 알아보기
- Customizing static analysis — 분석 옵션 파일과 코드 주석으로 정적 분석 커스터마이징하기.
- Dart SDK 이슈 트래커 — 알 수 없는 문제를 보고하는 곳.