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

R Discussion :

gestion de la mémoire


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut gestion de la mémoire
    Bonjour,

    J'essaye de comprendre la partie utilisation de la mémoire sous R et il y a quelque chose que je ne comprends pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    > object_size(1:1e6)
    4 MB
    > object_size(rep(1:1e6), 10)
    40 MB
     
    > object_size("banana")
    96 B
    > object_size(rep("banana"), 10)
    216 B
    Pourquoi object_size(rep("banana"), 10) ne fait que 216 B et non pas 960 B ?

  2. #2
    Membre expérimenté Avatar de Alpacky
    Homme Profil pro
    .
    Inscrit en
    Mars 2014
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : .

    Informations forums :
    Inscription : Mars 2014
    Messages : 99
    Par défaut
    hello,

    je pense que tu devrais lire http://adv-r.had.co.nz/memory.html regarder



    puis utiliser le package lobstr pour comprendre ce qui se trame!

    petite note je pense que dans ton code tu as mal placé la parenthèse pour le rep?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    # chr "banana" + integer 10
    object_size(rep("banana"), 10) # ==  object_size(rep("banana")) +  object_size(10)
    donc si j'assume que tu voulais écrire qqc comme cela (répéter "banana" 10 fois)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    library(lobstr)
     
    a <- "banana"
    b <- rep(a, 10)
     
    ref(a, b, character = TRUE)[1:0x74491d8] <chr> 
    └─[2:0x4d41800] <string: "banana"> 
     
    █ [3:0x6bbe9b8] <chr> 
    ├─[2:0x4d41800] 
    ├─[2:0x4d41800] 
    ├─[2:0x4d41800] 
    ├─[2:0x4d41800] 
    ├─[2:0x4d41800] 
    ├─[2:0x4d41800] 
    ├─[2:0x4d41800] 
    ├─[2:0x4d41800] 
    ├─[2:0x4d41800] 
    └─[2:0x4d41800]
    La fonction ref te sort les références des objets, ici on a deux objets a et b. Chaque objet a une référence distincte, cependant l'objet a "pointe" une fois vers "string:banana" et b "pointe" 10 fois. Cela explique la différence de mémoire! En réalité les octets en plus sont juste les octets des références ajoutées! Tu ne créés pas une copie de l'objet mais juste ajoute des références qui "pointent" vers l'objet string:banana!

    désolé pour les explications, la vidéo de Hadley est mieux

    cheers

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 606
    Par défaut
    bonjour,

    merci de votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 17
    Dernier message: 02/02/2006, 12h03
  2. gestion de la mémoire
    Par moldavi dans le forum C++
    Réponses: 17
    Dernier message: 04/02/2005, 23h18
  3. Réponses: 11
    Dernier message: 26/12/2004, 22h50
  4. Gestion de la mémoire entre plusieurs DLL
    Par Laurent Gomila dans le forum C++
    Réponses: 7
    Dernier message: 27/07/2004, 15h28
  5. Gestion des variables - mémoire ?
    Par RIVOLLET dans le forum Langage
    Réponses: 4
    Dernier message: 26/10/2002, 12h44

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