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 :

[C++] Copy-On-Write benchmark


Sujet :

C++

  1. #41
    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
    Points : 4 625
    Points
    4 625
    Par défaut
    C'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 seul
    Boost ftw

  2. #42
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    qui se lance dans un benchmark "realiste" ?
    et comment le faire surtout ?

  3. #43
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    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.

  4. #44
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    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.

  5. #45
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    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

  6. #46
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    vraiment dommage

  7. #47
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 674
    Points
    10 674
    Billets dans le blog
    3
    Par défaut
    C'est réparé

  8. #48
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    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

  9. #49
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    pour en revenir au COW, est-ce que vous avez pu comparer les performances sur les collections ? (vector vs QVector etc...)
    Miles ?

  10. #50
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    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+

  11. #51
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    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...

  12. #52
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par Luc Hermitte
    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<>.
    C'est pas plutôt MPI qui est arrivé dans Boost ?

  13. #53
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    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...

  14. #54
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    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

  15. #55
    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
    Points : 4 625
    Points
    4 625
    Par défaut
    MPI c'est pour le distribué, pas pour le multi-proc.
    Boost ftw

  16. #56
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    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...

  17. #57
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par epsilon68
    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 = processeurs sans mémoire partagée, que des bus de communications.
    openMP = processeurs à mémoire partagée.

  18. #58
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    MPI c'est super lourd.

    avec openmp ca me fait penser que Qt copierait la collection si on en modifie un element alors ?

  19. #59
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    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 ?

  20. #60
    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
    Points : 4 625
    Points
    4 625
    Par défaut
    non seulement le C++ etait beaucoup plus lent, mais consommait enormement de memoire.
    Si t'utilises de la mémoire en trop c'est que tu t'y es mal pris...

    ce qui m'a beaucoup decu, j'attendais mieux du COW
    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.
    Boost ftw

Discussions similaires

  1. Fonctionnement du copy on write.
    Par valefor dans le forum Virtualisation
    Réponses: 0
    Dernier message: 20/11/2012, 08h57
  2. 4d Write : impression et nombre de copie
    Par dogawaf dans le forum 4D
    Réponses: 6
    Dernier message: 18/01/2010, 23h08
  3. Réponses: 2
    Dernier message: 10/09/2009, 08h30
  4. copie de fichier en utilisant open,read,write
    Par une_tite_question dans le forum POSIX
    Réponses: 3
    Dernier message: 08/09/2008, 14h55
  5. COW copy on write
    Par epsilon68 dans le forum C++
    Réponses: 56
    Dernier message: 25/08/2008, 06h15

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