Le piège surprenant de l'allocation mémoire en Go : Une histoire de régression de 30%
Une refactorisation apparemment anodine dans un projet Go a entraîné une régression de performance de 30 %. Le coupable était la méthode `GetBytes` de la structure `ImmutableValue`, qui utilisait un récepteur de valeur, provoquant une allocation sur le tas à chaque appel. Les allocations sur le tas sont significativement plus coûteuses que les allocations sur la pile. La cause profonde était l'imprécision de l'analyse d'échappement du compilateur Go ; il n'a pas réussi à reconnaître que le récepteur de valeur n'échapperait pas. Le passage à un récepteur de pointeur a résolu le problème. Cet exemple souligne l'importance de comprendre les décisions d'allocation mémoire du compilateur Go et d'utiliser des types de récepteurs appropriés pour un code Go performant.