Maison > développement back-end > Golang > Comment les dépendances affectent-elles la taille d'un exécutable Go ?

Comment les dépendances affectent-elles la taille d'un exécutable Go ?

DDD
Libérer: 2024-11-17 03:31:03
original
460 Les gens l'ont consulté

How Do Dependencies Affect the Size of a Go Executable?

Déterminer la taille d'un projet Go

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
Copier après la connexion

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() {}
Copier après la connexion
// http.go
package main

import "net/http"

var _ = http.Serve

func main() {}
Copier après la connexion
// mux.go
package main

import "github.com/gorilla/mux"

var _ = mux.NewRouter

func main() {}
Copier après la connexion

Malgré leur équivalence fonctionnelle, leurs tailles binaires diffèrent considérablement :

$ du -k *

1028    empty
5812    http
5832    mux
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal