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

C Discussion :

Limites de l'allocation dynamique en C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    usthb
    Inscrit en
    Janvier 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : usthb

    Informations forums :
    Inscription : Janvier 2016
    Messages : 3
    Par défaut Limites de l'allocation dynamique en C
    Bonjour,

    Pour un de mes programmes j'ai besoin de manipuler des tableaux d'entiers 3D de t'aille approximative 10000*100*10000. je rencontre bien évidemment des problèmes pour cela notamment sur 4g de RAM (possibilité de tester sur plus). On essaye de me convaincre de passer au C++ qui pour lui l'allocation dynamique est optimale (étant déjà codé ) et de profiter des classes vector et array. Ma question: est ce que cela est vrai??? pourrais je économiser la mémoire utilisée par mon programme en utilisant le C++??? Merci.

  2. #2
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    Euh.. non si ce n'est pas possible en C ça ne le sera pas plus en C++. Là tu outrepasses les limites de la machine, pas celles du langage de programmation.

    Pour réaliser cela il faut mapper ta ressource (fichier(s) sur disque, ressource réseau...) en mémoire système, c'est-à-dire en avoir une vue restreinte dans un tampon en RAM. L'idée étant que tu rapatries régulièrement les parties que tu souhaites consulter tout en renvoyant les changements. L'implémentation d'un tel système dépend énormément des données à traiter et de la manière dont on prévoit d'y accéder. Alternativement tu peux regarder du côté d'appels système du type mmap (non portable).

    Je ne sais pas quel est ton niveau, mais c'est loin d'être trivial.

    Tu ne peux pas foutre tout ça dans une base de données MySQL ou PostGre ?

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Des tableaux de taille 37G
    Même sur gros système, je n'ai jamais vu cela.
    Je pense que dans tous les cas, il faudra gérer cela de manière particulière, ou bien attendre la création d'une machine suffisamment puissante.

  4. #4
    Candidat au Club
    Femme Profil pro
    usthb
    Inscrit en
    Janvier 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : usthb

    Informations forums :
    Inscription : Janvier 2016
    Messages : 3
    Par défaut
    Citation Envoyé par dalfab Voir le message
    Des tableaux de taille 37G
    Même sur gros système, je n'ai jamais vu cela.
    La taille est de 20G0 si je code en short type.

    Citation Envoyé par Matt_Houston Voir le message
    Euh.. non si ce n'est pas possible en C ça ne le sera pas plus en C++. Là tu outrepasses les limites de la machine, pas celles du langage de programmation.
    Ceci répond parfaitement à ma question je te remercie.

    Citation Envoyé par Matt_Houston Voir le message
    . Tu ne peux pas foutre tout ça dans une base de données MySQL ou PostGre ?
    J'ai songé à les conserver sur un .txt et avoir un compromis entre vitesse de performance et mémoire, mais comme il s'agit d'un 3D je bloque un peu dans l'accès aux éléments.

  5. #5
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Ca m'étonnerait que tu aie réellement besoin de tout cela en même temps.
    Ne pourrais-tu pas répartir le calcul par blocs?

  6. #6
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Quels sont les traitements à appliquer sur ces données ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  7. #7
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Citation Envoyé par Zinoubad Voir le message
    J'ai songé à les conserver sur un .txt et avoir un compromis entre vitesse de performance et mémoire, mais comme il s'agit d'un 3D je bloque un peu dans l'accès aux éléments.
    Non, pas un texte. Pour ça, il te faudrait un fichier binaire (indispensable pour de l'accès aléatoire). Idéalement, tu dois identifier dans quelle dimension les valeurs doivent être "proches" en mémoire, et mettre cette dimension "en dernier".

    Et ensuite, faire un paging: Lorsque tu as besoin de la valeur, monTableau[a][b][c], ce dont tu as besoin c'est la page contenant, par exemple, tout monTableau[a][b]. Ton code utilisateur va donc la réclamer à un gestionnaire de pages que tu auras aussi implémenté.
    • Si la page est déjà chargée dans le gestionnaire, il peut simplement la retourner et permettre l'accès aux valeurs qui s'y trouvent.
    • Sinon, il faut la charger. Et si le gestionnaire de pages est plein, il faut en libérer une: tu choisis dans ton gestionnaire de pages celle que tu vas sacrifier; tu écris dans ton fichier, au bon emplacement, tout le contenu de ladite page; puis tu charge celle dont tu as besoin.

    Optionnellement, tu pourrais aussi inclure un mécanisme pour savoir si une page est accédée en écriture ou en lecture, pour savoir si tu dois ou non passer par l'étape "écrire le contenu de la page dans le fichier".

    Noter que l'OS peut avoir des mécanismes de mapping pouvant faire une partie du travail pour toi (comme dans le cas des File Mapping de Windows, lire et écrire le contenu des pages, et probablement aussi détecter les modifications).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Allocation dynamique de mémoire : Limitations ?
    Par rulianf dans le forum C++
    Réponses: 5
    Dernier message: 22/03/2006, 17h03
  2. petit pbm allocation dynamique de stringGrid
    Par AnneOlga dans le forum C++Builder
    Réponses: 10
    Dernier message: 17/01/2004, 11h59
  3. Allocation dynamique de structures
    Par fr_knoxville dans le forum C
    Réponses: 8
    Dernier message: 06/05/2003, 21h59
  4. Allocation dynamique de mémoire en asm
    Par narmataru dans le forum Assembleur
    Réponses: 7
    Dernier message: 17/12/2002, 22h31
  5. Réponses: 4
    Dernier message: 03/12/2002, 16h47

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