go version: 1.13.4 Dans le code source sync / once.go , les commentaires suivants mentionnaient "hot path":
type Once struct {
// done indicates whether the action has been performed.
// It is first in the struct because it is used in the hot path.
// The hot path is inlined at every call site.
// Placing done first allows more compact instructions on some architectures (amd64/x86),
// and fewer instructions (to calculate offset) on other architectures.
done uint32
m Mutex
}
Mes questions sont:
Que signifie "chemin chaud" ici?
Est-ce que "C'est le premier dans la structure" rend un accès "hot path" plus efficace? Pourquoi?
Réponses:
Un chemin chaud est une séquence d'instructions exécutées très fréquemment.
Lorsque vous accédez au premier champ d'une structure, nous pouvons directement déréférencer le pointeur sur la structure pour accéder au premier champ. Pour accéder à d'autres champs, nous devons fournir un décalage par rapport à la première valeur en plus du pointeur struct.
En code machine, ce décalage est une valeur supplémentaire à transmettre avec l'instruction qui le rallonge. L'impact sur les performances est que le processeur doit effectuer un ajout du décalage au pointeur struct pour obtenir l'adresse de la valeur à laquelle accéder.
Ainsi, le code machine pour accéder au premier champ d'une structure est plus compact et plus rapide.
Notez que cela suppose que la disposition des valeurs de champ en mémoire est la même que dans la définition de la structure.
la source