Ben non, un bon compilateur optimise déjà ça tout seulC'est surtout par rapport à la valeur de retours dans les fonctions je crois. Avec la STL, tu es obligés "d'optimiser à la main" en jouant avec swap:
Ben non, un bon compilateur optimise déjà ça tout seulC'est surtout par rapport à la valeur de retours dans les fonctions je crois. Avec la STL, tu es obligés "d'optimiser à la main" en jouant avec swap:
Boost ftw
qui se lance dans un benchmark "realiste" ?
et comment le faire surtout ?
Je ne crois pas aux benchmarks, je ne crois qu'aux mesures en contexte. En ce sens, ce qui a été fait ici est bien. Ce qu'il faut éviter, c'est d'extrapoler à d'autres contextes.
Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.
Je trouve dommage le déplacement de ce fil dans le forum Qt : On n'y parle pas tant de Qt, que de mécanismes généraux (COW, mutex,...) et de leurs avantages respectifs, Qt n'étant cité ici que comme une illustration d'une façon de faire.
Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.
je suis tout a fait d'accord
c'etait avant tout les arguments sur le COW qui m'interessait, et le debat qu'il crée parce que Qt l'utilise. C'est aussi pour ca que je l'avais posté dans C++ et non dans Qt
C'est réparé
Merci
Aussi si tu veux mon avis, il vaudrait mieux eviter les sous-categories
et rendre les sous-categories des categories a part entiere (previsu dans la page d'accueil ... etc)
Merci
pour en revenir au COW, est-ce que vous avez pu comparer les performances sur les collections ? (vector vs QVector etc...)
Miles ?
Hello,
à votre avis il y aurait des probleme a utiliser openmp avec le implicit sharing de Qt ? De maniere generale j'ai toujours des doutes si on utilise d'autres libs (boost/thread par exemple)
OpenMP, boost/thread posent-ils un probleme a l'implicit sharing ?
Merci a+
Je peux difficilement te répondre. A tout hasard, jettes un oeil à boost.MP (ou un nom comme cela) qui a été proposée pour rejoindre le "collectif" de bibliothèques boost.
Je crois me souvenir qu'il y avait un document assez poussé. Peut-être qu'il y a des infos sur le mélange "comptage atomique" (*) + openMP.
(*) Car au fond, l'implicit sharing est développé autour de cela, tout comme les boost::shared_ptr<>.
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
C'est pas plutôt MPI qui est arrivé dans Boost ?Envoyé par Luc Hermitte
Je savais bien qu'il y avait "MP" dans le nom
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
haaarg c'est trop compliqué MPI,
et puis avec les processeurs multi-coeurs d'aujourd'hui il vaut mieux miser sur openMP. il permet aussi de passer en douceur au multi-threading.
Sur la mailing list de Qt, ils m'ont repondu que l'implicit sharing utilisait des primitives systemes et qu'il n'y avait a priori pas de risque avec le melange d'autre biblio. sauf pour les objets dependant de QThread bien entendu.
je ne sais pas ce qui m'arrive ... je deviens pro-boost
MPI c'est pour le distribué, pas pour le multi-proc.
Boost ftw
Oui. Des compteurs atomiques.
Chaque système a sa propre façon de les impléménter. Certains n'en ont pas.
Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...
MPI = processeurs sans mémoire partagée, que des bus de communications.Envoyé par epsilon68
openMP = processeurs à mémoire partagée.
MPI c'est super lourd.
avec openmp ca me fait penser que Qt copierait la collection si on en modifie un element alors ?
ces derniers temps je me suis amusé a faire en C++/STL, C++/Qt et C#.NET un programme qui transforme un fichier CSV, combine une colonne sur plusieurs lignes, etc.... on utilise beaucoup le split, les map, des map<string,map<string string> > etc
C'est un cas concret, servant pour mon travail.
en programmant sans penser optimization, le .NET est de loin le plus rapide en execution. le C++ etait dans les choux (avec des string et des map<string,string>, map<string, list<vector<string> > >) et C++/Qt pas plus rapide que C++ (ce qui m'a beaucoup decu, j'attendais mieux du COW ...)
non seulement le C++ etait beaucoup plus lent, mais consommait enormement de memoire.
pour un fichier de 22Mo 7771 lignes:
C++ +30s 400 Mo de memoire (C++/Qt etait meme plus lent)
C# 22 s 90 Mo de memoire
il n'y a qu'en revenant au char*, en mappant le fichier en memoire, et a referencer toute les chaines sur ce bloc de memoire que la version c++ fait maintenant:
C++ (char* + fichier en memoire): 14s 30-40 Mo de memoire
en appliquant certaines optimisation au c# (eviter une map dans certains cas, optimisations faites dans le C++)
C# 17 s 90 Mo
bref tout ca pour dire que Qt et l'implicit sharing ..... bof la ca m'a vraiment decu. Par contre les languages avec Machine Virtuelle ... ca se rapproche maintenant beaucoup des languages compilés .....
moi je serais bien partant pour faire tous ensemble un programme defini par nous tous dans plusieurs languages, dans le but de comparer plusieurs languages / frameworks. tout le monde peut lire et evaluer les programmes...
Qu'en pensez-vous ?
Si t'utilises de la mémoire en trop c'est que tu t'y es mal pris...non seulement le C++ etait beaucoup plus lent, mais consommait enormement de memoire.
Le COW n'a d'intérêt que si tu copies alors que tu devrais pas, ou si tu as une mauvaise structure avec redondance des données.ce qui m'a beaucoup decu, j'attendais mieux du COW
Boost ftw
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager