efficacité avec les containers STL [résolu] - C++ - Programmation
Marsh Posté le 18-01-2009 à 17:26:47
Tu as raison de dire que ça prendra moins de temps.
Tu as tort quand tu confonds complexité et temps d'exécution, et le passage de MonObjet à MonObjet* ne changera pas la complexité (enfin, à moins que dans ton MonObjet l'opération de copie ne sont pas en O(1)).
Marsh Posté le 18-01-2009 à 17:36:43
compelxité != tems d'exécution.
Si tu veut des perf regarde du coté de boost::intrusive ou de boost::pointer_container
Marsh Posté le 18-01-2009 à 17:42:09
Ok, merci pour la confirmation.
(Comme quoi la STL ne permet pas de se passer dans tous les cas des pointeurs. Dommage.)
Merci aussi pour la précision sur la complexité. En fait, je parlais de la complexité «en» temps d'execution pour la différencier de celle en volume de stoquage.
Marsh Posté le 18-01-2009 à 17:55:31
miq75 a écrit : Ok, merci pour la confirmation. |
La complexité au sens où JoelF l'entend
Marsh Posté le 18-01-2009 à 18:05:24
J'avais suivi. (C'est celle que j'appelle, moi, complexité EN temps d'execution, bien qu'elle n'en soit qu'un indice)
Merci pour vos réponses rapides.
Marsh Posté le 18-01-2009 à 20:44:20
Joel F a écrit : compelxité != tems d'exécution. |
Est ce qu'un std::container (e.g:std::vector) stockant des objets boost::scoped_ptr peut être équivalent à un boost::pointer_container en terme de perf ?
Aprés peut être qu'il existe des différences niveau exception-safe thread-safe, copyable ou non ou je sias pas quoi d'autre
Marsh Posté le 18-01-2009 à 20:47:18
et également comparé à un Boost.Intrusive , toujours en terme de performance
Marsh Posté le 18-01-2009 à 20:57:47
ReplyMarsh Posté le 18-01-2009 à 22:49:40
Joel F a écrit : aucune idée, lire la doc aidera je pense |
faut pas non plus enculer les mouches, si t'es sur du refcount, y a un moment tu peux pas descendre. les intrusives c'est pour les bousins qui ont déjà un compteur intégré.
pointer_container c'est du sucre.
Je m'étonne beaucoup de ce topic, tu dis que t'as un problème de perf alors que tu ne maitrises pas le structure de données de base de la STL. Si ça se trouve t'as pas le scientist de base qui code son algo N^3 en N^5 parce que t'as choisi les mauvaises structures données sans y réfléchir. Genre une vector au lieu d'une list, etc
Marsh Posté le 18-01-2009 à 22:54:25
miq75 a écrit : (Comme quoi la STL ne permet pas de se passer dans tous les cas des pointeurs. Dommage.) |
Bah si, un pointeur c'est un type comme un autre.
Marsh Posté le 18-01-2009 à 17:20:34
Bonjour,
Un petit problème me turlupine :
Je fais une bibliothèque permettant de créer des programmes qui posent des problèmes de complexité (temps d'execution). Je dois déplacer en temps critique des objets d'un vecteur à l'autre.
Si j'ai bien compris, un conteneur STL tel que vector<MonObjet> crée une copie de l'objet quand on lui en ajoute un, et efface sa copie quand on le retire.
Dans mon cas, il est donc intéressant du point de vue temps d'execution, bien que plus lourd pour l'ecriture de code, d'utiliser vector<MonObjet*> à la place. Ainsi, mes opérations durerons le temps de la copie d'un pointeur au lieu de celui de la copie d'un objet.
Ais-je raison ?
Message édité par miq75 le 18-01-2009 à 18:18:21