Maison  >  Article  >  développement back-end  >  Pourquoi la désactivation de CGO ralentit-elle la compilation même sans utiliser les liaisons C ?

Pourquoi la désactivation de CGO ralentit-elle la compilation même sans utiliser les liaisons C ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-09 00:52:02877parcourir

Why Does Disabling CGO Slow Down Go Compilation Even Without Using C Bindings?

Pourquoi compiler avec CGO_ENABLED=0 entraîne un ralentissement

Même si les liaisons C ne sont pas utilisées, la compilation avec CGO_ENABLED=0 ralentit sensiblement la compilation. Pour comprendre sa cause, nous devons nous plonger dans les mécanismes en jeu.

Les packages de bibliothèques standard sont construits à l'aide d'indicateurs de compilation prédéterminés. Lorsque CGO_ENABLED est défini sur 0, les indicateurs de build sont modifiés, rendant les packages pré-construits incompatibles. Par conséquent, la majorité de la bibliothèque standard doit être reconstruite.

Bien que "go build -i" puisse installer des packages construits avec les nouveaux indicateurs, cela ne résout pas entièrement le problème. L'installation de packages construits avec CGO_ENABLED=0 accélère les futures builds avec le même indicateur, mais gêne les builds sans celui-ci.

La méthode d'installation par défaut pour les packages pré-construits est inefficace, tous les packages étant stockés dans le même répertoire avec des valeurs identiques. noms quelles que soient leurs configurations de construction. Pour permettre des builds rapides avec différents indicateurs, "go build -i" doit être combiné avec les indicateurs "-installsuffix" ou "-pkgdir". En attribuant un répertoire unique pour chaque mode de compilation, des builds distincts avec différents indicateurs peuvent être hébergés de manière transparente.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn