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
    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

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

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

  3. #43
    Expert confirmé

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

  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 : 51
    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
    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 émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    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 émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

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

  7. #47
    Expert confirmé

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

    Informations professionnelles :
    Activité : pdg

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

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    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 émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    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 émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    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 confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 308
    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 308
    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 : 44
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    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 confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 308
    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 308
    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 émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    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
    Par défaut
    MPI c'est pour le distribué, pas pour le multi-proc.

  16. #56
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 308
    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 308
    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 : 44
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

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

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    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 émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    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 émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    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
    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.

Discussions similaires

  1. Fonctionnement du copy on write.
    Par valefor dans le forum Virtualisation
    Réponses: 0
    Dernier message: 20/11/2012, 09h57
  2. 4d Write : impression et nombre de copie
    Par dogawaf dans le forum 4D
    Réponses: 6
    Dernier message: 19/01/2010, 00h08
  3. Réponses: 2
    Dernier message: 10/09/2009, 09h30
  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, 15h55
  5. COW copy on write
    Par epsilon68 dans le forum C++
    Réponses: 56
    Dernier message: 25/08/2008, 07h15

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