IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lisp Discussion :

taille des variables en lisp


Sujet :

Lisp

  1. #1
    Membre à l'essai
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2015
    Messages : 21
    Points : 17
    Points
    17
    Par défaut taille des variables en lisp
    Bonsoir,
    je veux savoir le nombre des octets nécessaires pour coder les différents types en lisp : entier, réel ,booléen ,char ,string...
    Merci

  2. #2
    Membre actif
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2013
    Messages : 152
    Points : 275
    Points
    275
    Par défaut
    Salut !

    Personne ne le sait pas. Lisp gère la memoir lui-même. Le standard ne spécifie pas comment les objets sont représentés dans la mémoire.

    Par exemple, un entier est un fixnum ou un bignum. Le dernier peut être arbitrairement grand. Quant'aux fixnums, le standard garantie que c'est un supertype de (signed-byte 16). Alors, c'est au moins 16 bits. Il est inconnu où il sont localisés. Ce qui vraiment intéresse un programmeur, c'est, pour exemple, quel est le fixnum plus grand. C'est la valeur de la constante most-positive-fixnum.

    J'ai trouvé une discussion très intéressant, où l'un des auteurs du standard (Kent Pitman) explique pourquoi lisp est comme ça:
    https://groups.google.com/forum/#!to...sp/xv_IUl6wiWA

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par Om yassoufa Voir le message
    je veux savoir le nombre des octets nécessaires pour coder les différents types en lisp : entier, réel ,booléen ,char ,string...
    Peux-tu nous dire pourquoi tu veux savoir cela?

  4. #4
    Membre à l'essai
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2015
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par jack-ft Voir le message
    Peux-tu nous dire pourquoi tu veux savoir cela?
    Bonjour,
    en fait je dois mener des statistiques sur l'occupation mémoire d'un ensemble de programmes fonctionnels
    merci

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2013
    Messages : 152
    Points : 275
    Points
    275
    Par défaut
    Ben, c'est peu applicable en cas de Common Lisp.

    Premièrement, ce n'est pas un langage fonctionnel. (En effet, pourquoi est-ce que vous croyez qu'il l'est ?)

    Deuxièmement, Common Lisp, c'est le standard et en plusieures réalisations. Que je sache, le standard ne fait pas mention sur l'occupation de mémoire, alors les réalisations peuvent se comporter comment il leur plaît. Par exemple, SBCL réserve le tas (dont la dimension peut être contrôlée par l'option --dynamics-space-size) au démarrage, et c'est la dimension du tas qu'importe au monde extérieur, pas la dimension des objets spécifiques.

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Citation Envoyé par Om yassoufa Voir le message
    en fait je dois mener des statistiques sur l'occupation mémoire d'un ensemble de programmes fonctionnels
    Ces programmes sont-ils déjà écrits?
    Dans quel environnement lisp tournent-ils?
    Sont-ils compilés ou interprétés?
    (quoique cela ne doit pas changer l'occupation mémoire des données, seulement l'occupation mémoire du programme)

  7. #7
    Membre à l'essai
    Femme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Septembre 2015
    Messages : 21
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par jack-ft Voir le message
    Ces programmes sont-ils déjà écrits?
    Dans quel environnement lisp tournent-ils?
    Sont-ils compilés ou interprétés?
    (quoique cela ne doit pas changer l'occupation mémoire des données, seulement l'occupation mémoire du programme)
    Bonjour jack,
    Ces sont des projets libres ou des packages de lisp telque Matlisp https://sourceforge.net/projects/matlisp/
    et justement je cherche à évaluer la variation de l'occupation en mémoire du programme dés la déclaration des variables jusqu'à la fin mais j'arrive pas à le faire pour les programmes en lisp. Pour le c ou le java la taille des différents types est connue et donc c'était facile de faire les stats mais pour le lisp, j'arrive pas à les faire.
    Merci

  8. #8
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Si cela t'intéresse, je peux retrouver la taille précise des différents types d'objets en ram dans l'environnement Le_Lisp 15.25.

    En fait, c'est dans le manuel à la page 1-10: http://www.softwarepreservation.org/...en-1993_12.pdf

    Mais ça peut dépendre de l'implémentation de lisp utilisée.

    Du coup, peux-tu répondre à la question que j'ai posée précédemment:
    de quel environnement lisp s'agit-il (Le_Lisp, Clisp, LispWorks, SBCL, Allegro CL, CMU CL, etc.)?

    Citation Envoyé par Om yassoufa Voir le message
    Ces sont des projets libres ou des packages de lisp tels que Matlisp https://sourceforge.net/projects/matlisp/
    et justement je cherche à évaluer la variation de l'occupation en mémoire du programme dés la déclaration des variables jusqu'à la fin
    Hum... La variation de l'occupation en mémoire?

    En ce qui me concerne, il faudrait être plus précis.

    Veux-tu parler de l'augmentation de la taille du process? (Comme lorsqu'on fait un "malloc" en C)

    En effet, le seul lisp dont je connaisse bien (ou aie bien connu) l'implémentation est Le_Lisp.
    Or, dans celui-ci, la taille du process est fixe et déterminée par les constantes qui ont servi à sa constitution et par un argument fourni au lancement.
    Ensuite, les équivalents des mallocs sont gérés à l'intérieur de l'espace alloué au départ et ne changent pas la taille du process.
    Une des conséquences est que l'on peut produire une erreur fatale si on alloue et stocke plus d'objets que ne peut en contenir cet espace!
    On peut cependant considérer la variation de l'espace à l'intérieur des zones allouées au départ.

    Veux-tu calculer cette variation à la main ou par programme? (en Le_Lisp, il existe une fonction "gcinfo" qui permet d'obtenir l'occupation des différentes zones)

    D'autres lisps ont une gestion dynamique de l'espace alloué et leur process peut effectivement croître si besoin.

Discussions similaires

  1. La tailles des variables ?
    Par Midou45 dans le forum Débuter
    Réponses: 10
    Dernier message: 25/04/2008, 19h14
  2. [Tableaux] Taille des variables
    Par Teoftene dans le forum Langage
    Réponses: 5
    Dernier message: 06/03/2008, 22h56
  3. taille des variables
    Par jackk dans le forum Débuter
    Réponses: 27
    Dernier message: 21/02/2008, 13h09
  4. [TP] Comment contourner la limite de taille des variables ?
    Par celinec62 dans le forum Turbo Pascal
    Réponses: 12
    Dernier message: 20/04/2007, 21h00
  5. taille des variables ou des objets?
    Par BobLBricoleur dans le forum Flash
    Réponses: 4
    Dernier message: 27/12/2005, 14h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo