web-dev-qa-db-fra.com

Que signifie petite empreinte en termes de programmation?

J'ai entendu que de nombreuses bibliothèques telles que JXTA et PjSIP ont des empreintes plus petites. Est-ce que cela indique une petite consommation de ressources ou autre chose?

37
Xinus

Footprint désigne la taille occupée par votre application dans l'ordinateur RAM mémoire.

L'empreinte peut avoir une signification différente lorsque l'on parle de consommation de mémoire. D'après mon expérience, l'empreinte mémoire n'inclut souvent pas la mémoire allouée sur le tas (mémoire dynamique), ou les ressources chargées à partir du disque, etc. En effet, les allocations dynamiques ne sont pas constantes et peuvent varier en fonction de la façon dont l'application ou le module est utilisé. Lorsque vous signalez une "faible empreinte" ou une "empreinte élevée", une mesure constante ou supérieure de l'espace requis est généralement souhaitée.

Si, par exemple, l'inclusion de mémoire dynamique dans le rapport d'empreinte d'un éditeur d'images, l'empreinte dépendrait entièrement de la taille de l'image chargée dans l'application par l'utilisateur.

Dans le contexte d'une bibliothèque tierce, l'auteur de la bibliothèque peut optimiser l'empreinte mémoire statique de la bibliothèque en s'assurant que vous ne liez jamais plus de code dans votre application binaire que nécessaire. Une méthode courante utilisée pour ce faire, par exemple en C, consiste à répartir les fonctions de bibliothèque sur des fichiers c séparés. C'est parce que la plupart des éditeurs de liens C lieront tout le code d'un fichier c dans votre application, pas seulement la fonction que vous appelez. Donc, si vous mettez une seule fonction dans le fichier c, c'est tout ce que l'éditeur de liens va intégrer dans votre application lors de son appel. Si vous mettez cinq fonctions dans le fichier c, l'éditeur de liens les liera probablement toutes dans votre application même si vous n'en utilisez qu'une seule.

Cela étant dit, la définition générale (académique) de l'empreinte comprend toutes sortes d'aspects mémoire/stockage.

44
sharkin

De Wikipedia Empreinte mémoire article:

L'empreinte mémoire fait référence à la quantité de mémoire principale qu'un programme utilise ou référence lors de son exécution.

Cela inclut toutes sortes de régions de mémoire actives comme le segment de code contenant (principalement) des instructions de programme (et parfois des constantes), le segment de données (initialisé et non initialisé), la mémoire de tas, la pile d'appels, ainsi que la mémoire requise pour contenir toutes les structures de données supplémentaires, telles que des tables de symboles, des structures de données de débogage, des fichiers ouverts, des bibliothèques partagées mappées au processus en cours, etc., dont le programme a toujours besoin lors de l'exécution et qui seront chargés au moins une fois pendant toute la durée de l'exécution.

6
Alexey

Généralement, c'est la quantité de mémoire qu'il faut - l'empreinte qu'il laisse en mémoire lors de l'exécution. Cependant, il peut également se référer à l'espace qu'il prend sur votre disque dur - bien que ces jours-ci, ce soit moins un problème.

Si vous écrivez une application et que vous avez des limitations de mémoire, pensez à exécuter un profileur pour garder une trace de la quantité utilisée par votre programme.

4
Mark Mayo

Il fait référence aux ressources. Particulièrement la mémoire. Il nécessite une plus petite quantité de mémoire lors de l'exécution.

3
Vincent Ramdhanie

oui, des ressources telles que la mémoire ou le disque

1
djna