Esta ferramenta é um trabalho em andamento. Ainda não está totalmente pronto para produção, mas você pode experimentá-lo.
O Perfguard é um analisador estático, com ênfase no desempenho.
Ele suporta dois modos de execução:
perfguard lint encontra problemas em potencial, funciona como análise estática tradicionalperfguard optimize usa perfis de CPU para melhorar a precisão da análisePrincipais recursos de perfumar:
perfguard optimize--fix (Quickfixes)(*) Ele não tenta carregar metas de análise na memória de uma só vez.
Aqui estão alguns exemplos do que pode fazer por você:
Instale um binário perfguard sob o seu $(go env GOPATH)/bin :
$ go install -v github.com/quasilyte/go-perfguard/cmd/perfguard@latestÉ recomendável que você colete perfis da CPU em fluxos de trabalho realistas.
Para um aplicativo CLI de curta duração, pode ser uma corrida completa. Para um aplicativo de vida de longa data, você pode ativar o perfil por um minuto ou mais e salvá-lo em um arquivo.
Os perfis obtidos a partir de benchmarks não são representativos e podem levar a resultados abaixo do ideal.
Pontos quentes no perfil podem aparecer em três lugares principais:
Otimizar seu próprio código é direto. Execute o perfguard na raiz do seu projeto:
$ perfguard optimize --heatmap cpu.out ./... Isso sugerirá apenas correções na categoria (2) .
Para otimizar o código de (3) temos várias opções.
A primeira opção é preferível. Você pode usar o mesmo perfil da CPU para otimizar a biblioteca. Execute o PerfGuard na raiz do código -fonte da biblioteca, assim como você fez com seu aplicativo.
A segunda opção pode funcionar para os casos quando você deseja implantar um binário otimizado, sem ter uma maneira de corrigir dependências usando a primeira opção. Siga estas etapas:
# 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 Em seguida, você pode reverter as alterações no ./vendor ou removê -lo se não estiver usando o Vendoring.