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!