Maison >développement back-end >Golang >Pourquoi mon code Cgo est-il plus lent que le code Go prévu ?
Pourquoi cgo est-il si lent ?
Votre code de test compare le temps d'exécution des fonctions C et Go exécutées 100 millions de fois chacune. La fonction C prend plus de temps que la fonction Golang et vous craignez que quelque chose ne va pas avec votre code de test.
La surcharge élevée liée à l'appel du code C/C via CGo permet de minimiser au mieux les appels CGo. Dans l'exemple fourni, il pourrait être plus efficace de créer une boucle C au lieu d'appeler une fonction CGo à plusieurs reprises dans une boucle.
La configuration du runtime Go pour ses threads peut briser les attentes du code C de plusieurs manières :
Par conséquent, CGo adopte l'approche sûre de l'exécution Code C dans un thread séparé avec une pile traditionnelle.
Contrairement aux langages comme Python où la réécriture du code Les points chauds en C étaient courants pour accélérer les programmes, l'écart de performances de Go entre le code C et Go est beaucoup plus petit. Pensez à réserver CGo pour l'interface avec les bibliothèques existantes, éventuellement avec de petites fonctions wrapper C pour réduire le nombre d'appels requis depuis 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!