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 :

Tableau déchiqueté & performances


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut Tableau déchiqueté & performances
    Hello,

    Pour l'implémentation d'un tableau déchiqueté, l'utilisation de vecteurs de vecteurs, plutôt qu'une tambouille à base de tableaux de pointeurs, représente--t-elle une baisse significative de performances ?

    Seules les performances en lecture m'intéressent. Le remplissage est déterministe, et n'induira pas de problème de réallocation.

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Bonjour,

    Je pense que la meilleure solution reste encore de tester

    Après, "baisse significative de performances" dépend surtout de ce que ton programme fera et du nombre de données qu'il manipulera.

    Si tu t'amuses à lire des fichiers tout en ayant une interface graphique 3D et que tu ne manipules que 4 valeurs, prendre un tableau de pointeurs ou un vecteur de vecteur ne fera pas grande différence.

    Par contre si ton programme ne fait que lire les données de ton vecteur de vecteur ou de ton tableau de pointeur et que tu as un nombre important de valeurs à traiter alors oui, peut-être que cela pourra jouer.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Pour l'instant, il y a un tableau de pointeurs qui m'emmènent quelque part sur un même tableau d'octets. L'élément pointé me donne le nombre d'éléments auquel je dois m'attendre, puis j'itère sur les octets suivants (modulo une taille de classe : c'est de la désérialisation) avec un passage par un reinterpret_cast().

    J'ai plutôt envie, à la lecture, de transformer tout ça en un vecteur de vecteurs.

  4. #4
    Membre Expert
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Par défaut
    un vecteur de vecteur n'est pas contigu et va pourrir ton cache

  5. #5
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Sinon, c'est un peu tiré par les cheveux, mais ne pourrait-on pas stocker toutes les données dans un seul vecteur "data" comme tu le fait avec ta méthode de tableau de pointeur puis créer un vector de Ligne contenant des Lignes.

    Une Ligne hériterait alors de vector et redéfinierait les méthodes de sorte qu'il aille rechercher les données dans le vecteur "data" à chaque demandes (DP Proxy je ne m'abuse).

    Ainsi tu ne devrais pas trop perdre en performances et tu aura un conteneur "STL".

  6. #6
    Membre Expert
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Par défaut
    Citation Envoyé par Neckara Voir le message
    Une Ligne hériterait alors de vector et redéfinierait les méthodes de sorte qu'il aille rechercher les données dans le vecteur "data" à chaque demandes (DP Proxy je ne m'abuse).
    L'héritage et les conteneurs STL, ça va très mal ensemble, les destructeurs ne sont pas virtuels.

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 118
    Par défaut
    Un seul vecteur résout complètement le problème sans perte de performance!

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/07/2010, 23h35
  2. Réponses: 2
    Dernier message: 23/08/2007, 12h22
  3. Réponses: 3
    Dernier message: 25/04/2007, 09h45
  4. Réponses: 1
    Dernier message: 02/04/2007, 15h26
  5. [C#] Performance : c'est mieux un tableau ou un ArrayList?
    Par trotters213 dans le forum Windows Forms
    Réponses: 14
    Dernier message: 31/03/2005, 11h59

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