Maison  >  Article  >  développement back-end  >  Comment minimiser le coût des instructions de journalisation de trace désactivées dans Go ?

Comment minimiser le coût des instructions de journalisation de trace désactivées dans Go ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-03 19:02:031027parcourir

How to Minimize the Cost of Disabled Trace Logging Statements in Go?

Journalisation de trace à faible coût dans Go pour les déclarations désactivées

Dans Go, la journalisation de trace présente un défi unique : minimiser le coût des instructions de journal désactivées dans les chemins critiques. Contrairement à C/C , Go ne dispose pas de macros de préprocesseur, ce qui nécessite d'explorer des solutions alternatives.

Une approche consiste à utiliser les interfaces fmt.Stringer et fmt.GoStringer. En retardant le formatage jusqu'à l'exécution du journal, des appels de fonction coûteux dans les arguments de journalisation peuvent être évités :

type LogFormatter interface {
    LogFormat() string
}

// Inside the logger
if i, ok := i.(LogFormatter); ok {
    fmt.Println(i.LogFormat())
}

Une autre stratégie consiste à échanger l'enregistreur au moment de l'exécution à l'aide d'une interface d'enregistrement ou au moment de la construction à l'aide de contraintes de construction. Cependant, cela nécessite de s'assurer qu'aucun appel coûteux n'est inséré dans les arguments de journalisation.

Une troisième option consiste à définir le Logger lui-même comme un booléen, réduisant ainsi la verbosité tout en fournissant un moyen concis de contrôler la journalisation :

type Log bool
func (l Log) Println(args ...interface{}) {
    fmt.Println(args...)
}

var debug Log = false

if debug {
    debug.Println("DEBUGGING")
}

Enfin, la génération de code peut être explorée, même si elle n'est pas adaptée à la configuration du runtime. En utilisant gofmt -r ou en créant des fichiers à l'aide de texte/modèle, il est possible de créer des versions de débogage distinctes pour des scénarios de débogage spécifiques.

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