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

SL & STL C++ Discussion :

Rapidité std::vector contre liste perso


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Février 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 12
    Par défaut Rapidité std::vector contre liste perso
    Bonjour,

    Je m'occupe actuellement en créant une liste C++ ressemblant aux listes de type vector des libs std. (utilisant des template pour le type, et en utilisant le principe des listes chaînées à double sens pour le stockage).

    J'en viens à quelques tests de vitesse, et je remarque que l'insertion des valeurs est plus rapide du côté de la std (pas très surprenant..) :

    Pour insérer 5 000 000 de int*, ma liste prend ~ 1.94 secondes, alors que std::vector ne prend que 1.08 secondes.
    J'utilise push_back avec la std::vector, est une fonction qui insère à la fin pour ma liste.
    Je ne parcours pas toute la liste pour connaître la dernière adresse, j'ai toujours un pointeur vers celle-ci histoire de gagner du temps.


    J'avoue qu'aller voir comment std::vector est programmé ne me tente pas énormément (peur de ne pas comprendre du tout ), alors j'en viens à vous pour savoir si quelqu'un connaîtrait le fonctionnement d'allocation de std::vector.
    Sachant que pour le moment, j'alloue un espace mémoire à chaque insertion, est-ce que créer des espaces mémoires avant d'en avoir besoin, et donc par plus gros 'paquet' plutôt qu'à l'unité, serait plus rapide ? Ou est-ce que l'insertion dans std::vector utilise un procédé spécial, etc... Si quelqu'un à la moindre idée/doc là dessus, je suis preneur !

    Si je ne suis pas assez clair ou qu'il manque des informations, svp excusez-moi et je tenterais de résoudre ce problème.

    Merci d'avance
    r'm

  2. #2
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    std::vector n'est pas une liste chainée, c'est beaucoup plus proche d'un tableau.
    std::list est une liste chainée.

  3. #3
    Membre habitué
    Inscrit en
    Février 2007
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 12
    Par défaut
    Ok merci pour l'information. (effectivement ! Ma liste insère plus vite que std::list).

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    après faut aussi ne pas essayer en debug

  5. #5
    screetch
    Invité(e)
    Par défaut
    a part prouver qu'un vecteur/tableau est plus adapté qu'une liste, ton benchmark ne montre pas grand chose...

  6. #6
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Ça m'étonnerait que tu puisses vraiment faire plus rapide que std::list...
    Tu testes probablement pas des choses équivalentes, et pas avec les bonnes options.

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

Discussions similaires

  1. Luabind et std::vector/list
    Par lludol dans le forum C++
    Réponses: 2
    Dernier message: 08/05/2014, 21h37
  2. std::list ou std::vector comme argument de template
    Par epsilon68 dans le forum C++
    Réponses: 11
    Dernier message: 01/03/2011, 23h34
  3. Réponses: 2
    Dernier message: 18/09/2010, 22h33
  4. [Tuto] Recherche de tutoriel sur std::list et std::vector
    Par pegase06 dans le forum SL & STL
    Réponses: 27
    Dernier message: 24/07/2007, 16h23
  5. std::list, std::vector et allocation mémoire
    Par buzzkaido dans le forum SL & STL
    Réponses: 20
    Dernier message: 15/06/2007, 15h58

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