이 도구는 진행중인 작업입니다. 아직 완전히 생산 준비가되지는 않았지만 시도해 볼 수 있습니다.
Perfguard는 성능에 중점을 둔 GO 정적 분석기입니다.
두 가지 실행 모드를 지원합니다.
perfguard lint 잠재적 인 문제를 발견하고 전통적인 정적 분석과 같이 작동합니다.perfguard optimize CPU 프로파일을 사용하여 분석 정밀도를 향상시킵니다.Perfguard 키 기능 :
perfguard optimize 모드의 프로파일 유도 분석--fix argument (Quickfixes)와 함께 자동 고정입니다.(*) 분석 목표를 한 번에 메모리에로드하려고 시도하지 않습니다.
다음은 귀하를 위해 무엇을 할 수 있는지에 대한 몇 가지 예입니다.
$(go env GOPATH)/bin 아래에 perfguard Binary를 설치하십시오.
$ go install -v github.com/quasilyte/go-perfguard/cmd/perfguard@latest현실적인 워크 플로에서 CPU 프로파일을 수집하는 것이 좋습니다.
단기 CLI 앱의 경우 전체 실행 일 수 있습니다. 오래 지속되는 앱의 경우 프로파일 링을 1 분 이상 켜고 파일에 저장할 수 있습니다.
벤치 마크에서 얻은 프로파일은 대표적이지 않으며 최적의 결과로 이어질 수 있습니다.
프로파일의 핫스팟은 세 가지 주요 장소에 나타날 수 있습니다.
자신의 코드를 최적화하는 것은 간단합니다. 프로젝트의 루트에서 Pertguard를 실행하십시오.
$ perfguard optimize --heatmap cpu.out ./... 이것은 (2) 범주에 대한 수정 만 제안합니다.
(3) 에서 코드를 최적화하려면 몇 가지 선택이 있습니다.
첫 번째 옵션이 바람직합니다. 동일한 CPU 프로파일을 사용하여 라이브러리를 최적화 할 수 있습니다. 애플리케이션과 마찬가지로 라이브러리 소스 코드 루트에서 pertguard를 실행하십시오.
두 번째 옵션은 첫 번째 옵션을 사용하여 종속성을 수정하는 방법이없는 반면 최적화 된 바이너리를 배포하려는 경우 케이스에 대해 작동 할 수 있습니다. 다음 단계를 따르십시오.
# Make dependencies easily available for perfguard.
$ go mod vendor
# Run the analysis over the vendor.
# We use --fix argument to immediately apply the suggested changes.
$ perfguard optimize --heatmap cpu.out --fix ./vendor/...
# Build the optimized binary.
$ go build -o bin/app ./cmd/myapp 그런 다음 ./vendor 로 변경 사항을 되돌리거나 벤더링을 사용하지 않는 경우 제거 할 수 있습니다.