Maison >développement back-end >Golang >Pourquoi ma fonction CGo est-elle plus lente que ma fonction Pure Go ?
Considérations sur les performances de CGo
Vous avez effectué une comparaison des temps d'exécution des fonctions CGo et Go pures, et la fonction cgo présente des performances plus lentes . Bien que votre code de test semble valide, il existe des facteurs sous-jacents qui peuvent expliquer cette disparité.
Les fonctions CGo entraînent une pénalité de performances en raison de la surcharge impliquée dans l'appel du code C/C. Il est recommandé de minimiser la fréquence des appels CGo pour optimiser les performances. Cependant, pour votre exemple, il pourrait être plus efficace de déplacer la boucle dans le code C plutôt que d'appeler à plusieurs reprises une fonction CGo.
Plusieurs aspects de la configuration et de l'exécution de Goroutine dans Go peuvent remettre en question les attentes du code C :
Pour garantir la stabilité, CGo choisit d'exécuter le code C dans un thread séparé avec une pile traditionnelle.
Contrairement aux langages comme Python, où l'optimisation du code avec C est courante, Go offre un écart de performances plus étroit entre le code C et Go équivalent.
Par conséquent, il est généralement conseillé d'utiliser CGo principalement pour l'interface avec des bibliothèques externes, en utilisant potentiellement de petites fonctions wrapper C pour réduire les appels effectués à partir du code Go.
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!