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

Débats sur le développement - Le Best Of Discussion :

Pour ou Contre le Garbage Collector ?


Sujet :

Débats sur le développement - Le Best Of

  1. #281
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par davcha Voir le message
    Ca tombe bien que tu parles de "mauvaise conception" (en fait j'espérais que tu allais en parler).
    En gros, l'idée est que si tu réalises un programme qui a pour but d'effectuer le travail A, tu souhaites que la majorité du code du programme en question soit du "A" et pas un aspect technique B, C ou D.
    Je suis peut-être pas très clair...
    Effectivement...

    Citation Envoyé par davcha Voir le message
    Reprenons l'histoire de notre programme de gestion avec une base de données ou un service web derrière.
    Si ton appli de gestion traite des fleurs sauvages et de leurs relations avec les ours et la pollution, tu veux que la majorité du code soit relatif aux fleurs, aux ours et à la pollution.
    Inversement, tu souhaites éviter un maximum toute référence à des librairies techniques, par exemple.
    Ah bon ??

    Ben non, je veux que mon code puisse aujourdhui traiter des fleurs et de leurs relations etc.., mais je le conçois pour qu'il puisse aussi traiter des algues et de leurs relations avec les poissons, et les cités du 93 et leurs relations avec les mecs qui y habitent...


    Citation Envoyé par davcha Voir le message
    Tu vas me dire que la gestion de la mémoire, ce n'est pas une librairie technique, et tu auras raison. Par contre, si dans ton code tu as à tout bout de champ des tas d'allocations mémoires (même bien foutues, hein, je parle pas d'une allocation mémoire dans une triple boucle imbriquée, par exemple), ça "pollue" ton code.
    Toutes ces allocations mémoires sont du ressort de l'ordinateur, ça n'a rien à voir avec la logique qui régit les fleurs sauvages, les ours et la pollution.
    Ca pollue, donc. Et par conséquent, rend ton code moins lisible, plus difficile à maintenir, etc...
    Montre-moi un code informatique, quel que soit le langage, qui se lit comme du français (à part quelques exemples ésotériques, je vous vois venir, les autres, là ) dont la syntaxe est ton problème ??

    Toutes les instructions informatiques sont techniques...

    Les déclarations, les noms des fonctions, les "namespace", les "new", les "properties", absolument tout est technique... (la meilleure preuve est qu'il faut avoir appris pour programmer, même un "hello world", dans n'importe quel langage).

    Alors pourquoi cette instruction-là polluerait-elle plus que les autres ???

    Déclarer struct Fleur ou autres typedef est peut-être plus logique et moins technique ??? PAs à mon sens..



    Citation Envoyé par Luc Hermitte Voir le message
    de même que les techniques plus ou moins alternatives, cf les digressions récentes)

  2. #282
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    [...]
    Montre-moi un code informatique, quel que soit le langage, qui se lit comme du français (à part quelques exemples ésotériques, je vous vois venir, les autres, là ) dont la syntaxe est ton problème ?? [...]
    La tortue du Logo ?

  3. #283
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 589
    Points
    41 589
    Par défaut
    Citation Envoyé par davcha Voir le message
    On peut faire un stackalloc et un autre truc dont je me sers si peu souvent que j'ai oublié comment ça s'appelait. Ca permet d'avoir la même chose qu'un tableau initialisé sur la pile en C++. Ca nécessite de créer un type valeur particulier pour contenir le truc, par contre.

    Ceci dit, tout ça c'est unsafe.
    Je pensais plutôt à un simple tableau de types valeur sur le tas. Ça reste dépendant du GC, ça contient aussi des infos de RAII, mais seulement pour le tableau lui-même, pas pour les éléments individuels qu'il contient.

  4. #284
    Membre expérimenté Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Points : 1 539
    Points
    1 539
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    Ah bon ??

    Ben non, je veux que mon code puisse aujourdhui traiter des fleurs et de leurs relations etc.., mais je le conçois pour qu'il puisse aussi traiter des algues et de leurs relations avec les poissons, et les cités du 93 et leurs relations avec les mecs qui y habitent...
    Traiter des fleurs et des ours et prévoir ce qu'il faut pour traiter des algues et des poissons, ça reste de la conception.

    Quand tu commences à devoir gérer des ressources comme des connexions à une base de données, des sockets ou autre... t'es en pleine implémentation.
    Et à priori, le "vrai" boulot de ton programme c'est de t'occuper de fleurs et d'ours, ou même d'algues. Alors un moins de code relatif aux BDD et autres ressources techniques, c'est quand même plus sympathique.

    Citation Envoyé par souviron34
    Déclarer struct Fleur ou autres typedef est peut-être plus logique et moins technique ??? PAs à mon sens..
    Pas moins technique, juste plus abstrait.

    C'est quand même plus simple de manipuler une struct Fleur ou un typedef que de manipuler 30 variables "volantes" et des déclarations de pointeurs de fonctions.

  5. #285
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par davcha Voir le message
    Traiter des fleurs et des ours et prévoir ce qu'il faut pour traiter des algues et des poissons, ça reste de la conception.

    Quand tu commences à devoir gérer des ressources comme des connexions à une base de données, des sockets ou autre... t'es en pleine implémentation.
    Et à priori, le "vrai" boulot de ton programme c'est de t'occuper de fleurs et d'ours, ou même d'algues. Alors un moins de code relatif aux BDD et autres ressources techniques, c'est quand même plus sympathique.


    Pas moins technique, juste plus abstrait.

    C'est quand même plus simple de manipuler une struct Fleur ou un typedef que de manipuler 30 variables "volantes" et des déclarations de pointeurs de fonctions.
    je n'alimenterais plus ce troll, mais ce que tu indiques dans tes messages c'est que tu es moins à l'aise avec les allocs et pointeurs, pas que c'est un avantage massue... Tes arguments pour l'instant ne relèvent que d'un manque... Car si ils étaient vrais, alors il faudrait se débarrasser des sockets (des chaussettes ?? dans un programme d'ours et de fleurs ?? ), des structures de données (pas naturelles), de la notion de fonction (lié à l'ordi), des instructions comme "open" (lié à l'ordi), etc etc...

    Que tu ne sois pas à l'aise, soit... Mais ce n'est pas un argument valable...

    Ce n'est pas parce que tu as une voiture F1 qui va à 350 km/h que tu sais la conduire...

  6. #286
    Membre expérimenté Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Points : 1 539
    Points
    1 539
    Par défaut
    Ce n'est pas une question d'être plus ou moins à l'aise avec ceci ou cela, c'est une question de quantité de code à écrire pour effectuer une action.

    En définitive, si j'ai le choix entre deux options pour réaliser la même action, une qui me demande 500 lignes et l'autre qui m'en demande 3, je choisis l'option 3 lignes (sauf si y'a un avantage gigantesque, genre les perfs, à écrire les 500 lignes).

    Pourquoi tu ne codes plus en assembleur ou en langage machine ? Parce que le langage que tu utilises est plus expressif.

  7. #287
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    svp arretez avec l'analogie de l'assembleur.

    Java/C# n'est pas d'un niveau plus abstrait que C++ !!!
    Je prefere tres nettement C++, plus de possibilité, plus de facon de faire.

    (ne parlons pas de langage fonctionnel qui serait finalement plus complementaire que concurrent)

    En outre, je me sens tout a fait à l'aise avec la gestion memoire manuelle, que je place 99.99% uniquement dans les destructeurs, j'utilise le RAII et c'est super.

    en java ca m'embete reellement de ne pas avoir le keyword const, que si je renvoie un objet je ne peux etre sure qu'il ne soit pas modifié, que je ne peux redefinir les operateurs (*-+ pour les vecteurs matrices par exemple c'est mieux non? mais largement mieux) et le cout memoire qui s'envole avec Java, c'est incroyable.

    La memoire et la rapidité sont 2 choses qui sont tres importantes dans un programme, si souvent négligé d'ailleurs.

    d'un coté on entend toujours que la memoire c'est pas grave parce qu'on a de plus en plus de memoire, etc etc pour les cpu aussi.

    mais si je reprend mon kernel qui en Java prend 250 Mo pour 70'000 faces, bein alors comment je fais pour des models largement superieur. Et quand un objet est relaché, je dois attendre combien de temps pour que la memoire soit a nouveau disponible???? attendre juste le GC!! mais c'est quand exactement qu'il va venir?

    en C++, je peux tout le temps faire mieux, optimiser, etc
    désolé mais pas avec les autres.

  8. #288
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    Excuse-moi, j'ai été un peu loin tout à l'heure

    Citation Envoyé par davcha Voir le message
    Ce n'est pas une question d'être plus ou moins à l'aise avec ceci ou cela, c'est une question de quantité de code à écrire pour effectuer une action.

    En définitive, si j'ai le choix entre deux options pour réaliser la même action, une qui me demande 500 lignes et l'autre qui m'en demande 3, je choisis l'option 3 lignes (sauf si y'a un avantage gigantesque, genre les perfs, à écrire les 500 lignes).

    Pourquoi tu ne codes plus en assembleur ou en langage machine ? Parce que le langage que tu utilises est plus expressif.
    Le problème n'est, à mon avis, pas une différence entre 3 et 500.

    Et que un programme est fait pour tourner et être maintenu, principalement. L'écriture initiale ne compte que relativement peu dans la vie du programme.

    Ceci dit, effectivement, si j'ai un raccourci, je peux le prendre. SI ce raccourci n'a pas trop de désavantages...

    J'arrête-là, pusique j'avais dit que je m'en servais pas.. Mais c'était juste pour dire, au vu du débat, c'est tout (et en particulier les 3 o u4 dernières ages sont assez éclairantes : il n'y a pas de "bonne" réponse...)

  9. #289
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par epsilon68 Voir le message
    mais si je reprend mon kernel qui en Java prend 250 Mo pour 70'000 faces, bein alors comment je fais pour des models largement superieur. Et quand un objet est relaché, je dois attendre combien de temps pour que la memoire soit a nouveau disponible???? attendre juste le GC!! mais c'est quand exactement qu'il va venir?
    Et encore, prend un modèle terrestre

    Moi j'ai eu à faire un prog avec stucture de données (par exemple Amérique du Nord, au mètre près, soit une matrice de 6000000 * 6000000 * 50, avec de 1 à 50 paramètres par point (pour la météo) (tout en réel).

    J'ai réussi à optimiser de manière à ce que ça prenne un minimum, mais la gestion mémoire est pas mal.... "tailorisée"...

    Je n'ose imaginer ce que j'obtiendrais avec un outil automatique

  10. #290
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 282
    Points : 11 036
    Points
    11 036
    Par défaut
    Voici un fil récent sur clc++ au sujet des intérêts des GC et en particulier relativement à ce que le C++ offre: Garbage collection in C++ ; une fois de plus, les messages de James Kanze sont des plus intéressants. Il y avait quantité d'autres fils plus techniques sur comment les mettre en œuvre en C++, sur les incompatibilités qu'il faudrait résoudre, etc, etc.

  11. #291
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 408
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 408
    Points : 20 543
    Points
    20 543
    Par défaut
    Bon un exemple concret

    En C# et .NET j'ai une méthode d'une classe comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public Rectangle DimensionRectangle()
    {
        return new Rectangle(positionControleX,
     positionControleY, 
    positionControleX+HauteurControle,
     positionControleY+LargueurControle); 
    }
    En C++ et win32 on déclarerait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    RECT CMaClasse::DimensionRectangle()
    {
    RECT rect;
    rect.left=m_positionControleX;
    rect.top=m_positionControleY;
    rect.bottom=m_positionControleX+HauteurControle;
    rect.right=m_positionControleY+LargueurControle;
    return rect;
    }
    Si je fais cela en C# comme en C++ j'ai une erreur; c'est syntaxiquement possible mais à la compilation cela ne passe pas parce que rect n'est pas "initialisé" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public Rectangle DimensionRectangle()
    {
       Rectangle rect;
    rect.left=m_positionControleX;
    rect.top=m_positionControleY;
    rect.bottom=m_positionControleX+HauteurControle;
    rect.right=m_positionControleY+LargueurControle;
    return rect;
    
    }
    La différence ?
    En C++ le rectangle est alloué localement à l'appel de la méthode.
    En C# on fait un new mais est-ce que le GC de .NET gère bien la destruction du Rectangle ?
    C'est ça ma question.
    Et que se passe-t-il si en C# on appelle plusieurs fois cette méthode dans un laps de temps très court ( par exemple pour un jeu vidéo avec animations )

  12. #292
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 589
    Points
    41 589
    Par défaut
    System.Drawing.Rectangle est une struct (value class en C++/CLI), ce qui fait que le new ne fait pas d'allocation, seulement un appel au constructeur (oui, la syntaxe des structs est sans doute un peu malheureuse en C#, ça m'a confus aussi au début).

    C'est plus explicite en C++/CLI:
    Code C++/CLI : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void TestRect(void)
    {
    	//NOTE: j'ai pris une Size à la place du Rectangle, 
    	//car ses propriétés sont read-only :
    	//Rectangle est un type assignable, mais immuable.
    	//Mais les deux sont des structs, j'ai vérifié.
    	System::Drawing::Size s; //pas de new, pas de gcnew
    	s.Height = 1; //pas d'erreur, ni de warning
    	s.Width = 2;
    }

    PS: En java par contre, les structs n'existent pas, donc tu as bien un vrai new qui alloue un Rectangle sur le tas, et ce Rectangle devra être détruit par le GC... à un certain moment. Après que toutes ses références auront disparu. Quand le GC aura le temps de s'en occuper.

  13. #293
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Même en C++, tu retournes une classe (ou une struct) sur la pile. Bon plan ou pas ?

    Dans les 2 langages, tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void dimensionRectangle(Rectangle c) { //ou Rectangle &c) 
        c.x =  positionControleX;
        c.y = positionControleY;
        ...
    }
    Ca permet d'avoir une méthode indépendante du type d'allocation en C++.
    Et ca permet d'éviter d'allouer si pas besoin en C#


    C'est comme avec une opération sur une image.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //C++
    Image * vertical(const Image & in)
    
    //C#
    Image vertical(Image in)
    Alors qu'il faudrait faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void vertical(Image & out, const Image & in);
    Comme ça, on s'en tape de savoir si out a été alloué sur la pile ou sur le tas.

  14. #294
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    on oublie alors le polymorphisme.
    (ta methode interdit de retourner une interface par exemple)

  15. #295
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    Et encore, prend un modèle terrestre

    Moi j'ai eu à faire un prog avec stucture de données (par exemple Amérique du Nord, au mètre près, soit une matrice de 6000000 * 6000000 * 50, avec de 1 à 50 paramètres par point (pour la météo) (tout en réel).

    J'ai réussi à optimiser de manière à ce que ça prenne un minimum, mais la gestion mémoire est pas mal.... "tailorisée"...

    Je n'ose imaginer ce que j'obtiendrais avec un outil automatique
    Ton probleme est plutot conceptuel a ce moment la. tenter de charger quelque chose que tu sais pertinament etre volumineux en memoire, c'est aller volontairement vers les problemes memoires.

    Et vu que je suis aussi dans la cartographie, je peux t'assurer que j'arrive a afficher le BlueMarble de la Nasa (soit 86400 x 43200) avec un programme java limiter a 32mo memoire grace a systeme de stockage digne de ce nom.

    Je pense que tu devrais te pencher sur des solutions de tuilage/mosaicage et pas accuser un langage avec GC a cause d'un vice de conception.

  16. #296
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par eclesia Voir le message
    Ton probleme est plutot conceptuel a ce moment la. tenter de charger quelque chose que tu sais pertinament etre volumineux en memoire, c'est aller volontairement vers les problemes memoires.

    Et vu que je suis aussi dans la cartographie, je peux t'assurer que j'arrive a afficher le BlueMarble de la Nasa (soit 86400 x 43200) avec un programme java limiter a 32mo memoire grace a systeme de stockage digne de ce nom.

    Je pense que tu devrais te pencher sur des solutions de tuilage/mosaicage et pas accuser un langage avec GC a cause d'un vice de conception.


    Je pense que tu es loin : primo c'était une appli pour un service de météo national, donc pas du bidouillage. secondo c'était pas afficher une carte ou une image, mais faire des calculs sur un modèle numérique de l'Amérique du Nord au mètre près.



    6000 * 6000 kms = 6000 000 * 600 000 points
    *25 altitudes
    *5 à 50 paramètres par point
    *3 à 6 pas de temps
    *2 à 3 types de modèles

    le tout en double précision....

    Bon, la solution n'est pas une matrice comme ça, pour les modèles. Mais au dessus de ces modèles, il y a par exemple les observations (3000 stations, dont certaines bougent (avions, bateaux, bouées) avec de 2 à 50 paramètres, la foudre (de 300 000 à 500 000 points ayant de 5 à 10 paramètres), des images satellites, etc etc

    Mais le problème de fond est un problème de mémoire. Et il n'y a pas d'autres solutions que d'utiliser la gestion traditionnelle de la mémoire... optimisée...

  17. #297
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    mais je fais aussi du traitement d'image, le netCDF multidimensionnel je commence a connaitre.
    Peu importe la taille si tu as un systeme de tuilage.

  18. #298
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par eclesia Voir le message
    mais je fais aussi du traitement d'image, le netCDF multidimensionnel je commence a connaitre.
    Peu importe la taille si tu as un systeme de tuilage.
    tu n'as pas bien lu...

    Ce n'était pas des images, mais des séries de points (pas des pixels) arrivant au fur et à mesure du temps (organisés en plan, en volume, en ligne plus ou moins verticale, en points isolés, etc etc).

    Et surtout pas avec du NetCDF...

    Bref, inutile de continuer à digresser, nous n'avons pas le même problème.

  19. #299
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    Dans le fond si on a le meme probleme, le traitement de donnée volumineuses.

    Meme si je n'ai pas ton probleme exacte, j'ai sans doute tous les jours sous la main ce qui s'en rapproche le plus. affichage de donnée satelite, traitement, données vectorielles etc ...

    Je ne travail peut etre que sur l'aspect visuel (moteur de rendue carthographique), rendre visible des chiffres scietifiques c'est du traitements aussi. Le fait est la, j'ai en entrée quelques tera de données (bases/flux/fichiers ...) . Met ce genre de moteur sur un serveur carto (projet Constellation) qui va repondre a une petite centaine de client demandant differentes données a differente echelles avec des styles differents.
    Il y a tout ce qu'il faut pour faire exploser la memoire en quelques secondes.
    Et pourtant ca tourne sans gestion memoire directe (donc avec un GC) .
    Je ne fais que jouer avec le systeme de reference fournis par java, reference hard/soft/weak pour mes variables.

  20. #300
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par Furikawari Voir le message
    Que tout ceux qui ont bossé sur de vrais gros projets C++ viennent me jeter la première pierre en soutenant que la gestion manuelle de la mémoire induit 0 surcoût...
    Je travaille actuellement sur des codes lourds en terme de calculs sur des supercalculateurs, entre autres. Des codes qui prennent plusieurs jours à finir, avec plusieurs calculs distincts, enfin l'artillerie lourde. Par défaut, on fait du C ou du Fortran, et on tape sur les pointeurs. Je suis sur un prototype actuellement en C++, c'est pointeurs intelligents dans tous les sens car l'impact mémoire doit être minimum, puisqu'on travaille sur des Go de données chargées en mémoire.

Discussions similaires

  1. Garbage collector en C++, pour ou contre ?
    Par Klaim dans le forum C++
    Réponses: 70
    Dernier message: 05/08/2010, 15h03
  2. Le Garbage collector est-il fait pour cela ?
    Par macRiaz dans le forum Android
    Réponses: 16
    Dernier message: 24/02/2010, 01h01
  3. Réponses: 12
    Dernier message: 29/06/2009, 08h20
  4. Réponses: 1
    Dernier message: 03/06/2009, 01h25

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