go version: 1.13.4 No código-fonte sync / once.go , os seguintes comentários mencionaram "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
}
Minhas perguntas são:
O que "hot path" significa aqui?
O "É o primeiro na estrutura" torna o acesso ao "caminho quente" mais eficiente? Por quê?
Respostas:
Um caminho ativo é uma sequência de instruções executadas com muita frequência.
Ao acessar o primeiro campo de uma estrutura, podemos desreferenciar diretamente o ponteiro da estrutura para acessar o primeiro campo. Para acessar outros campos, precisamos fornecer um deslocamento do primeiro valor, além do ponteiro struct.
No código de máquina, esse deslocamento é um valor adicional a ser transmitido com a instrução que o torna mais longo. O impacto no desempenho é que a CPU deve executar uma adição do deslocamento no ponteiro struct para obter o endereço do valor a acessar.
Assim, o código da máquina para acessar o primeiro campo de uma estrutura é mais compacto e mais rápido.
Observe que isso pressupõe que o layout dos valores do campo na memória seja o mesmo que na definição da estrutura.
fonte