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 :

Allocation/Acc�s m�moire vecteurs matrice


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �clair�
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Octobre 2010
    Messages
    382
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 382
    Par d�faut Allocation/Acc�s m�moire vecteurs matrice
    Bonjour,

    Dans mon code j'ai la possibilit� de d�clarer 3 vecteurs (std::vector<double>) ou bien une matrice (std::vector<std::vector<double>>)

    Ce qui m�int�resse dans mon code est la rapidit� de l'ex�cution, pour l'allocation m�moire j'ai pas de contraintes.

    Qu'est ce qui est plus rapide entre les deux d�clarations ci-haut (cot� acc�s m�moire lors de la lecture des vecteurs).

    pouvez vous m'expliquer ce compromis Allocation/Acc�es m�moire pour am�liorer la performance de mon code

    Merci d'avance

  2. #2
    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
    Citation Envoy� par 3aychoucha Voir le message
    Qu'est ce qui est plus rapide
    Ne pas utiliser de vecteurs.

  3. #3
    Membre �m�rite

    Profil pro
    Inscrit en
    D�cembre 2008
    Messages
    533
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 533
    Par d�faut
    Utilise plut�t 3 std::vector allou�s distinctement. Tu sais d�s la compil qu'il t'en faudra 3, donc inutile de les stocker dans un autre std::vector, dont l'int�r�t est de g�rer une quantit� ind�finie d'objets. En plus, acc�der � tes attributs via this->vv[0] sera toujours moins explicite que this->monPremierVecteur dans ton code, sans compter les risques de confusion d'indices.

    Citation Envoy� par oodini Voir le message
    Ne pas utiliser de vecteurs.
    En mode release, std::vector::operator[] n'est pas plus lent qu'un acc�s "classique" � un tableau C, si ?

  4. #4
    Membre �clair�
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Octobre 2010
    Messages
    382
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : Tunisie

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 382
    Par d�faut
    Citation Envoy� par oodini Voir le message
    Ne pas utiliser de vecteurs.
    Utiliser quoi donc?
    Merci d'avance

  5. #5
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 49
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Secteur : Sant�

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par d�faut
    Mouais, ok. Encore le probl�me des vector vs tableaux style C. Je peux pas dire qu'il n'y a pas de diff�rence. Mais ce n'est pas en g�n�ral la plus grosse source de perte de performance. Et donc jamais la premi�re optimisation � faire

    @cob59
    entre vector::operator[] et p[], je crois pas qu'il y ait de diff�rence (peut �tre que certaine impl�mentation de vector::operator[] ajoute un assert en debug pour v�rifier l'indice pass� ?)
    Par contre, il y a une diff�rence entre un algo utilisant un acc�s al�atoire avec[] et un algo utilisant un acc�s s�quentiel avec ++

    @3aychoucha
    Si tu sais que tu as 3 vecteurs, tu n'est pas oblig� d'utiliser un vecteur de vecteur. Comme le dit cob59, un vecteur, c'est un tableau dynamique
    Par contre, tu peux utiliser std::array (ou boost::array si tu n'utilises pas le C++11), qui est un tableau statique
    Mais la solution avec 3 vecteur est tout � fait acceptable

    Le plus important quant on fait de l'optimisation, c'est surtout de ne pas perdre de temps � optimiser ce qui n'est pas n�cessaire. Typiquement dans ton cas, l'utilisation de 3 vecteurs ou d'un vecteur de vecteur repr�sentera 0.1% de perte de perf si � c�t� du fais 10000 push_back

    Pour optimiser, il faut obligatoirement :
    1. faire du profiling
    2. choisir le bon algorithme
    3. �viter les allocations (dans l'id�al, une seule)
    4. pour terminer, faire de la micro optimisation (tableau style C, pointeur au lieu d'it�rateur, etc)

    Tu as �galement la possibilit� d'utiliser les optimisations mat�rielles (multithreading, sse, gpu, etc) selon le besoin en donn�es et algos utilisables

  6. #6
    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
    Si c'est du statique, il vaut encore mieux utiliser Boost.MultiArray.

Discussions similaires

  1. [debutant] : Allocation de m�moire dynamique
    Par sam.fet dans le forum Langage
    R�ponses: 5
    Dernier message: 15/02/2006, 14h58
  2. Probl�me d'allocation de m�moire dans la pile
    Par prophet666 dans le forum x86 32-bits / 64-bits
    R�ponses: 6
    Dernier message: 19/01/2006, 02h22
  3. [Debutant]Allocation de m�moire
    Par gwendal84 dans le forum C
    R�ponses: 6
    Dernier message: 07/12/2005, 19h04
  4. Double allocation de m�moire
    Par hunter001 dans le forum C++
    R�ponses: 16
    Dernier message: 25/08/2005, 13h53
  5. pb d'allocation de m�moire
    Par shura dans le forum C
    R�ponses: 7
    Dernier message: 17/04/2005, 21h10

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