Cet outil est un travail en cours. Ce n'est pas encore entièrement prêt pour la production, mais vous pouvez l'essayer.
Perfguard est un analyseur statique Go en mettant l'accent sur les performances.
Il prend en charge deux modes d'exécution:
perfguard lint trouve des problèmes potentiels, fonctionne comme une analyse statique traditionnelleperfguard optimize utilise les profils du processeur pour améliorer la précision d'analyseCaractéristiques clés de la perfue:
perfguard optimize--fix (QuickFix)(*) Il n'essaie pas de charger des cibles d'analyse en mémoire à la fois.
Voici quelques exemples de ce qu'il peut faire pour vous:
Installez un binaire perfguard sous votre $(go env GOPATH)/bin :
$ go install -v github.com/quasilyte/go-perfguard/cmd/perfguard@latestIl est recommandé de collecter des profils de CPU sur des workflows réalistes.
Pour une application CLI de courte durée, cela pourrait être une course complète. Pour une application de longue durée de vie, vous voudrez peut-être activer le profilage pendant une minute ou plus, puis enregistrez-le dans un fichier.
Les profils obtenus à partir de repères ne sont pas représentatifs et peuvent conduire à des résultats sous-optimaux.
Les points chauds du profil peuvent apparaître dans trois endroits principaux:
L'optimisation de votre propre code est simple. Exécutez la perfard sur la racine de votre projet:
$ perfguard optimize --heatmap cpu.out ./... Cela ne suggèrera que des correctifs à la (2) catégorie.
Pour optimiser le code de (3) nous avons plusieurs choix.
La première option est préférable. Vous pouvez utiliser le même profil CPU pour optimiser la bibliothèque. Exécutez le perfguard sur la racine du code source de la bibliothèque comme vous l'avez fait avec votre application.
La deuxième option peut fonctionner pour les cas où vous souhaitez déployer un binaire optimisé sans avoir de moyen de corriger les dépendances en utilisant la première option. Suivez ces étapes:
# 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 Ensuite, vous pouvez retourner les modifications au ./vendor ou le supprimer si vous n'utilisez pas de vente.