CodeGuru est un service d'AWS qui peut analyser automatiquement votre code pour les problèmes de performances courants et d'autres bogues tels que les conditions de concurrence et les fuites de mémoire. Si vous payez pour le serveur sur lequel il fonctionne, le temps processeur gaspillé est de l’argent gaspillé.
Que fait CodeGuru?
Fondamentalement, CodeGuru est un algorithme d'apprentissage automatique formé et réglé pour fournir des recommandations afin d'améliorer les performances de vos applications. CodeGuru analyse votre base de code pour trouver des lignes de code problématiques qui peuvent être optimisées pour éviter le gaspillage de cycles de processeur. Cette fonctionnalité s'appelle CodeGuru Profiler.
En plus de trouver des problèmes de performances, CodeGuru dispose également d'une autre fonctionnalité, le CodeGuru Reviewer, qui est formé aux meilleures pratiques d'application et peut détecter les problèmes courants tels que les fuites de ressources, les conditions de concurrence ou la gestion des erreurs problématiques.
Bien sûr, CodeGuru n'est pas destiné à remplacer complètement les révisions de code humain, et il n'est pas destiné à faire des tests d'interface utilisateur sous quelque forme que ce soit. Cependant, il détecte les choses que les humains peuvent manquer et peut effectuer des tests automatisés sur chaque domaine de votre application.
CodeGuru, comme la plupart des AWS, a une tarification à l'utilisation et est suffisamment bas pour être exécuté pour chaque révision de code. Pour une demande d'extraction typique avec 500 lignes de code, AWS estime qu'il ne coûterait que 3,75 USD pour exécuter CodeGuru Reviewer dessus. Évidemment, cela s'additionnera en fonction du nombre de demandes d'extraction que vous avez, mais pour ce qu'il offre et les économies de calcul potentielles, CodeGuru sera rentabilisé pour de nombreuses personnes.
Malheureusement, CodeGuru ne prend actuellement en charge que les applications Java. Cependant, d'autres langues devraient être prises en charge prochainement et cela fonctionnera en grande partie de la même manière. Si vous lisez ceci à l'avenir, vous pouvez consultez leur site Web pour voir quelles langues sont prises en charge.
Utilisation du profileur
Dirigez-vous vers le Console de gestion CodeGuruet sélectionnez «Groupes de profilage» dans la barre latérale. Vous pouvez créer le vôtre ici, mais il existe déjà deux groupes que vous pouvez explorer pour voir comment cela fonctionne. Nous allons ouvrir celui "Avec des problèmes" pour y jeter un coup d'œil.
Sur l'écran principal, vous verrez un graphique de tout le temps que le processeur passe à exécuter diverses fonctions. Les sommets plats sont des zones où le processeur effectue un travail dans une fonction particulière et n'est pas passé à appeler d'autres méthodes.
Par exemple, par rapport à d'autres référentiels de démonstration sans problèmes, le code s'exécute plus rapidement et passe plus de temps à travailler.
Si vous cliquez sur le bouton "Recommandations", vous verrez une liste de choses que CodeGuru trouve et qui peuvent être optimisées. Par exemple, dans la démonstration avec problèmes, 10% du temps a été consacré à la création ObjectMappers
, qui sont lents à créer et ne doivent être créés qu'une seule fois. CodeGuru recommande de l'initialiser en tant que variable statique pour résoudre ce problème.
CodeGuru vous indiquera quelles fonctions contiennent le code problématique, afin que vous puissiez affiner le problème et le résoudre rapidement.
Pour ce qui est de tester vos propres applications, c’est assez simple. Créez un nouveau groupe de profilage et vous recevrez des instructions sur la façon d'intégrer le profileur dans votre application, soit en exécutant votre JVM avec un -javaagent
paramètre, ou en l'intégrant directement dans votre application.
Dans tous les cas, démarrez votre application et exécutez le profileur. Après 5 minutes, le premier profil sera soumis, ce qui peut prendre jusqu'à 15 minutes à traiter.
Pour le réviseur de code, qui donne des recommandations de non-performance, il vous suffit de lier votre référentiel à CodeGuru sous "Dépôts associés". Après cela, vous verrez des révisions de code pour chaque pull request.