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 :

L'utilisation d'une classe perso ralentit énormement mon programme


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 113
    Par défaut L'utilisation d'une classe perso ralentit énormement mon programme
    Salut salut ,

    ma question est presque inclue dans le titre : Je me suis créé une classe matrix pour me faciliter la vie (et m'entrainer en c++ ) mais si je transpose mon code qui utilise à l'origine des tableaux 2D en un identique mais qui utilise ma classe matrix cela ralenti énormément la résolution de mon calcul

    Du coup je suis un peu déçu et je préfèrerais qu'on me dise que ma classe est mal faites plutôt que c'est tout à fait normal !

    Donc je vous pose la question avant de vous montrer mon code !

    Merci d'avance

  2. #2
    Membre éclairé Avatar de GrosLapin
    Homme Profil pro
    Ingénieur et Etudiant
    Inscrit en
    Avril 2013
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur et Etudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 47
    Par défaut
    C'est dur de répondre à "pourquoi mon programme marche mal" sans le programme :p

    Ou au moins les parties que tu as identifié comme lentes.

    Je sais pas si ça peut t'aider mais es-tu passé par la ? http://cpp.developpez.com/faq/cpp/?p...E_matrix_array

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 113
    Par défaut
    J'avais bien vu cet article même si j'ai effectivement fait ma classe sous forme de tableaux de tableaux :

    Donc il n'est pas évident que l'utilisation d'une classe perso prenne plus de temps que l'utilisation d'une classe native du c++ ?

    En tout cas voici ma classe ! Enfin un bout ^^

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    matrix::matrix(int dim_i, int dim_j) : m_dim_i(dim_i), m_dim_j(dim_j)
    {
        alloc();
     
        for (int i=0; i<m_dim_i; i++)
        {
            for (int j=0; j<m_dim_j; j++)
            {
                p[i][j] = 0;
            }
        }
    }
     
    matrix::matrix(int dim_i) : m_dim_i(dim_i), m_dim_j(1)
    {
        alloc();
     
        for (int i=0; i<m_dim_i; i++)
        {
            for (int j=0; j<m_dim_j; j++)
            {
                p[i][j] = 0;
            }
        }
    }
     
    void matrix::alloc()
    {
        p = new double*[m_dim_i];
     
        for (int i=0; i<m_dim_i; i++)
        {
            p[i] = new double[m_dim_j];
        }
    }
     
    matrix::~matrix()
    {
        for (int i=0; i<m_dim_i; i++)
        {
            delete [] p[i];
        }
        delete [] p;
    }
     
    int matrix::size(int dim)
    {
        if (dim == 1)
        {
            return m_dim_i;
        }
        else if (dim == 2)
        {
            return m_dim_j;
        }
        else
        {
            return 0;
        }
    }
    Je n'ai pas mis les opérations matricielles !

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 113

  5. #5
    Membre éclairé Avatar de GrosLapin
    Homme Profil pro
    Ingénieur et Etudiant
    Inscrit en
    Avril 2013
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur et Etudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 47
    Par défaut
    Bon, c'est un sujet sur lequel je suis en train de me former, donc ne prend pas ce que je dis pour argent comptant.

    Si je me trompe pas, tu es sur que tes "cases" de tes lignes soient contiguës en mémoire, mais par que lignes le soient ?

    Est ce que tu es sur de ne pas faire de parcours "en colonne" dans tes opérations ?

    Est ce que tu as fait des mesures de temps pour savoir ou est ce que ton programme avait du mal ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 113
    Par défaut
    Pour les mesures de temps je les ai fais de façon globale :

    - je met 5 secondes avec les tableaux 2D
    - je met 49 secondes avec mes matrix

    PS : je fais du calcul scientifique c'est pour cela que c'est déjà long à l'origine

    Par contre je ne comprends pas trop tes autres question (le C++ n'est pas ma spécialité) peux tu m'expliquer un peu plus ?

  7. #7
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par défaut
    As-tu essayé en ne créant pas ta matrice en tableau de tableaux mais en un tableau simple ?
    En mettant les bons accesseurs ça devrait être transparent pour l'utilisateur
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  8. #8
    Membre Expert
    Avatar de Klaim
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2004
    Messages
    1 717
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 717
    Par défaut
    Il nous faut le code complet, pas juste l’implémentation des fonctions...

    Mais déjà il y a des trucs très louches.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/12/2012, 03h26
  2. Utiliser les méthodes ror dans une class perso
    Par BakaOnigiri dans le forum Ruby on Rails
    Réponses: 10
    Dernier message: 01/02/2010, 12h01
  3. [POO] Utilisation d'une classe pdo perso
    Par artotal dans le forum Langage
    Réponses: 11
    Dernier message: 05/04/2008, 03h47
  4. pb utilisation d'une classe perso
    Par sharivaree dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/12/2006, 18h44
  5. Utilisation iterator avec une classe perso
    Par SteelBox dans le forum C++
    Réponses: 19
    Dernier message: 07/03/2005, 11h30

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