Pour évaluer la taille d'un projet Go qui est un package importé dans le vôtre, il existe des moyens d'évaluer son empreinte.
Une méthode consiste à examiner le répertoire $GOPATH/pkg, où résident les binaires de la bibliothèque. Par exemple, l'installation des packages gorilla/mux, gorilla/securecookie et gorilla/sessions produira des tailles binaires dans le répertoire $GOPATH/pkg/darwin_amd64/github.com/gorilla/.
$ cd $GOPATH/pkg/darwin_amd64/github.com/gorilla/ $ du -k * 284 mux.a 128 securecookie.a 128 sessions.a
Cependant, la taille de la bibliothèque n'est pas le seul indicateur de son impact sur la taille de votre exécutable après la liaison. Les dépendances au sein des packages peuvent introduire des « bagages » supplémentaires, qui peuvent ou non être partagés par d'autres importations.
Pour illustrer cette variabilité, considérons ces trois programmes : vide.go, http.go et mux.go.
// empty.go package main func main() {}
// http.go package main import "net/http" var _ = http.Serve func main() {}
// mux.go package main import "github.com/gorilla/mux" var _ = mux.NewRouter func main() {}
Malgré leur équivalence fonctionnelle, leurs tailles binaires diffèrent considérablement :
$ du -k * 1028 empty 5812 http 5832 mux
L'ajout de l'import net/http dans http.go augmente considérablement son taille, alors que l'utilisation du package gorilla/mux dans mux.go ne l'augmente que marginalement.
En effet, le package mux dépend du package net/http, il hérite donc de ses dépendances. L'éditeur de liens peut éliminer une partie de ce bagage supplémentaire lors de la compilation, mais il n'est pas simple de calculer la véritable empreinte d'un package.
Conclusion : L'identification des sous-dépendances d'un package est cruciale pour évaluer avec précision son impact sur la taille de votre exécutable. La simple addition des tailles de bibliothèques de packages ne fournit pas une image complète.
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!