Maison  >  Article  >  développement back-end  >  Comment utiliser le langage Go pour la pratique de l'analyse des performances du code

Comment utiliser le langage Go pour la pratique de l'analyse des performances du code

WBOY
WBOYoriginal
2023-08-03 18:17:04951parcourir

Comment utiliser le langage Go pour la pratique de l'analyse des performances du code

Présentation :
La performance du code est l'un des indicateurs clés pour mesurer l'efficacité de l'exécution du programme. Lorsqu'un programme est confronté à de grandes quantités de données, à des calculs complexes ou à une concurrence élevée, l'optimisation des performances du code peut améliorer la vitesse de réponse et le débit de l'ensemble du système. Dans le langage Go, nous pouvons utiliser certains outils et bibliothèques intégrés pour effectuer une analyse des performances du code, localiser les goulots d'étranglement et effectuer les optimisations correspondantes.

Cet article présentera la pratique de l'utilisation du langage Go pour l'analyse des performances du code et fournira un exemple de code correspondant.

  1. Utilisez pprof pour l'analyse des performances du processeur
    Le package pprof est fourni dans la bibliothèque standard du langage Go pour l'analyse des performances du processeur. Nous pouvons capturer l'utilisation du processeur et enregistrer les informations pertinentes dans un fichier en important le package et en utilisant les fonctions pprof.StartCPUProfile() et pprof.StopCPUProfile() dans le code. Ensuite, nous pouvons utiliser l'outil go tool pprof pour analyser ces fichiers de profil CPU.

L'exemple de code est le suivant :

package main

import (

"fmt"
"os"
"runtime/pprof"

)

func main() {

f, err := os.Create("cpu.prof")
if err != nil {
    fmt.Println("create cpu.prof failed:", err)
    return
}
defer f.Close()

pprof.StartCPUProfile(f)
defer pprof.StopCPUProfile()

// 运行你的代码

fmt.Println("CPU profiling done.")

}

La commande permettant d'utiliser l'outil go tool pprof pour analyser le fichier de profil du processeur est :

go tool pprof cpu.prof

Ensuite, vous pouvez utiliser certaines commandes fournies par pprof pour afficher les informations pertinentes. Par exemple, utilisez la commande top pour afficher la liste de classement d'utilisation du processeur :

(pprof) top

  1. Utilisez pprof pour l'analyse des performances de la mémoire
    En plus de l'analyse des performances du processeur, le package pprof du langage Go fournit également des fonctions d'analyse des performances de la mémoire. Semblable à l'analyse des performances du processeur, nous pouvons écrire l'allocation de mémoire dans un fichier en utilisant la fonction pprof.WriteHeapProfile() dans le programme et utiliser l'outil go pprof pour l'analyse.

L'exemple de code est le suivant :

package main

import (

"fmt"
"os"
"runtime/pprof"

)

func main() {

f, err := os.Create("mem.prof")
if err != nil {
    fmt.Println("create mem.prof failed:", err)
    return
}
defer f.Close()

pprof.WriteHeapProfile(f)

// 运行你的代码

fmt.Println("Memory profiling done.")

}

La commande pour utiliser l'outil go tool pprof pour analyser le fichier de profil de mémoire est :

go tool pprof mem.prof

Ensuite, vous pouvez utiliser certaines commandes de pprof pour afficher les informations pertinentes. Par exemple, utilisez la commande top pour afficher le classement de l'utilisation de la mémoire :

(pprof) top

  1. Utilisez expvar pour l'analyse des indicateurs d'exécution
    Le package expvar du langage Go fournit un mécanisme pour collecter et afficher les indicateurs de code au moment de l'exécution. Nous pouvons exposer les données des indicateurs personnalisés à des appels externes sous forme de variables, puis utiliser l'outil go expvar pour afficher les valeurs de ces indicateurs.

L'exemple de code est le suivant :

package main

import (

"expvar"
"fmt"
"net/http"

)

var (

counter = expvar.NewInt("counter")

)

func main() {

http.HandleFunc("/metrics", expvarHandler)
http.ListenAndServe(":8080", nil)

// 运行你的代码

}

func expvarHandler(w http. RéponseWrit euh, req * http.Request) {

fmt.Fprintf(w, "%s

", req.URL.Path)

expvar.Do(func(kv expvar.KeyValue) {
    fmt.Fprintf(w, "%s: %v

", kv.Key, kv.Value)

})

}

Visitez http://localhost:8080/metrics dans le navigateur, vous pouvez afficher les données de l'indicateur correspondant.

Résumé :
En utilisant les packages pprof et expvar fournis par le langage Go, nous pouvons facilement effectuer une analyse des performances du code et une collecte d'indicateurs. L'utilisation de ces outils et bibliothèques nous aide à localiser les goulots d'étranglement dans le code et à effectuer le travail d'optimisation correspondant, améliorant ainsi les performances et la réactivité du programme.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn