go version: 1.13.4 En el código fuente sync / once.go , los siguientes comentarios mencionan "ruta de acceso":
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
}
Mis preguntas son:
¿Qué significa "ruta caliente" aquí?
¿"Es el primero en la estructura" hace que un acceso de "ruta caliente" sea más eficiente? ¿Por qué?
Respuestas:
Una ruta activa es una secuencia de instrucciones ejecutadas con mucha frecuencia.
Al acceder al primer campo de una estructura, podemos desreferenciar directamente el puntero a la estructura para acceder al primer campo. Para acceder a otros campos, necesitamos proporcionar un desplazamiento desde el primer valor además del puntero de estructura.
En el código de máquina, este desplazamiento es un valor adicional para pasar con la instrucción que lo hace más largo. El impacto en el rendimiento es que la CPU debe realizar una adición del desplazamiento al puntero de estructura para obtener la dirección del valor para acceder.
Por lo tanto, el código de máquina para acceder al primer campo de una estructura es más compacto y más rápido.
Tenga en cuenta que esto supone que el diseño de los valores de campo en la memoria es el mismo que en la definición de estructura.
fuente