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 :

temps de calcul ?


Sujet :

C++

  1. #1
    Membre confirm�
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    75
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 75
    Par d�faut temps de calcul ?
    Bonjour tous,

    j'ai un code C++ qui est tr�s bien mais qui prend beaucoup de temps,
    j'aimerai savoir o� il passe du temps es ce que ceci est possible ?
    (je suis d�butant)

    Sinon, avez vous quelques conseille pour gagner du temps de calcul informatiquement parlant ?

    1) par exemple je fais toujours des boucles "for i=1..." et une fois quelqu'un m'a dit d''utiliser "BOOST" or je ne l'ai jamais fait car je ne sais pas comment �a marche... es ce vraiment utile ?

    2) Dans mon programme j'�cris aussi pas mal de fichier texte, es ce qu'il y a une astuce l� aussi pour gagner du temps ?
    Moi en g�n�ral � chaque it�ration de mon programme j'ouvre un fichier, j'�cris dedans et je le referme. Peux etre que je devrais l'ouvrir et ne le refermer qu'� la fin de tout les calculs ?

    3) j'ai entendu parl� de parall�lisation mais �a me sembe un peu compliqu�, auriez vous des conseils pour d�buter dans ce domaine ? que faut il utiliser ? j'ai cru comprendre que MPI c'etait tres bien ???

    merci grandement pour l'aide que vous pourrez m'apporter !

  2. #2
    Membre chevronn�
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    329
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 329
    Par d�faut
    Citation Envoy� par thomMonteillet Voir le message
    Bonjour tous,

    j'ai un code C++ qui est tr�s bien mais qui prend beaucoup de temps,
    j'aimerai savoir o� il passe du temps es ce que ceci est possible ?
    (je suis d�butant)
    Oui, on appelle �a du profiling. Voir gprof, cachegrind, intel Vtune (payant) par exemple.

    1) par exemple je fais toujours des boucles "for i=1..." et une fois quelqu'un m'a dit d''utiliser "BOOST" or je ne l'ai jamais fait car je ne sais pas comment �a marche... es ce vraiment utile ?
    Boost n'a rien � voir avec le fait de faire des boucles sur des entiers. Ce serait long d'expliquer ce qu'est Boost, comment par lire la page wikipedia ou la doc de Boost.

    2) Dans mon programme j'�cris aussi pas mal de fichier texte, es ce qu'il y a une astuce l� aussi pour gagner du temps ?
    Moi en g�n�ral � chaque it�ration de mon programme j'ouvre un fichier, j'�cris dedans et je le referme. Peux etre que je devrais l'ouvrir et ne le refermer qu'� la fin de tout les calculs ?
    Oui il faut �viter d'ouvrir/fermer, mais �galement �viter d'�crire autant que possible. Si tu n'a pas grand chose � �crire, peut-�tre que tu peux tout garder en m�moire pendant plusieurs it�rations et �crire de temps en temps seulement.

    3) j'ai entendu parl� de parall�lisation mais �a me sembe un peu compliqu�, auriez vous des conseils pour d�buter dans ce domaine ? que faut il utiliser ? j'ai cru comprendre que MPI c'etait tres bien ???
    Il y a tellement de choses � faire avant de parall�liser, c'est vraiment la derni�re chose que tu veux faire !
    MPI est utilis� pour distribuer les donn�es, en g�n�ral sur un cluster de plusieurs machines. Pour exploiter un processeur multi-coeurs, on peut faire de l'OpenMP par exemple, ou du TBB, etc.
    Ne pas oublier la vectorisation �galement...

  3. #3
    Membre confirm�
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    75
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 75
    Par d�faut
    merci �normement de prendre le temps de m'aider!!!

    Citation Envoy� par Joker-eph Voir le message
    Oui, on appelle �a du profiling. Voir gprof, cachegrind, intel Vtune (payant) par exemple.
    OK, je vais regarder. Es ce facile � utiliser pour un d�butant ? es ce qu'il y a des choses qui sont d�pendante de l'IDE ? moi j'utilise souvent Qt ou codeBlock...


    Citation Envoy� par Joker-eph Voir le message
    Boost n'a rien � voir avec le fait de faire des boucles sur des entiers. Ce serait long d'expliquer ce qu'est Boost, comment par lire la page wikipedia ou la doc de Boost.
    ah ok, j'avais cru comprendre que dans boost il y a des trucs qui s'appel "it�rateurs" et que soit disant �a ferait gagner pas mal de temps si on met ceci dans toutes les boucles....

    Citation Envoy� par Joker-eph Voir le message
    Oui il faut �viter d'ouvrir/fermer, mais �galement �viter d'�crire autant que possible. Si tu n'a pas grand chose � �crire, peut-�tre que tu peux tout garder en m�moire pendant plusieurs it�rations et �crire de temps en temps seulement.
    ah oui c'est une bonne id�e !

    Citation Envoy� par Joker-eph Voir le message
    Il y a tellement de choses � faire avant de parall�liser, c'est vraiment la derni�re chose que tu veux faire !
    MPI est utilis� pour distribuer les donn�es, en g�n�ral sur un cluster de plusieurs machines. Pour exploiter un processeur multi-coeurs, on peut faire de l'OpenMP par exemple, ou du TBB, etc.
    Ne pas oublier la vectorisation �galement...
    - en fait j'ai parl� de ceci car j'ai des taches qui se font totalement ind�pemment l'une de l'autre.
    - du coup je me suis dis vu que mes taches sont compl�ments d�coupl�es si je pouvais les lancer sur trois PC mon programme irait 3fois plus vite ?

    au fait qu'appel tu vectorisation ?

  4. #4
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 49
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Secteur : Sant�

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par d�faut
    Oublie tes points 1, 2 et 3 et concentre toi sur le profiling pour commencer. C'est �a qui va t'indiquer les am�liorations � apporter, toutes autres am�lioration "a priori" risque d'�tre une perte de temps car non adapt� � ton programme

    vectorisation : utilisation des instructions de calcul parall�le CPU (SSE)

  5. #5
    Membre confirm�
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    75
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 75
    Par d�faut
    d'accord, merci.

    Profiler:
    quel est le profiler que vous me conseillerez ? avez vous un tuto qui explique comment s'en servir ?

    Parall�lisation:
    par contre je suis certain que la parall�lisation va me faire gagner du temps car voici comment mon code fonctionne :

    - j'ai un objet "A" � qui on fourni � travers la m�thode "input" un vecteur
    - en sortie cet objet "A" � travers la m�thode "output" me donne une matrice "B"
    - et je peux avoir environ 80000 objets "A" diff�rents. ce que je fais pour le moment c'est une boucle: pour le premier objet je fais le calcul, une fois fini je fais le calcul avec le 2eme objet, une fois fini avec le troisi�me...etc
    - si je fais les choses en parall�le il est clair que je vais gagner du temps vu que mes objets sont totalement ind�pendants

  6. #6
    Expert �minent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activit� : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par d�faut
    Salut,

    On peut d�j� te donner quelques astuces cependant:

    Essayes de passer tous les arguments qui ne sont pas des type primitifs par r�f�rence (�ventuellement constante si la fonction qui les prend ne doit pas les modifier) et non par valeur: cela t'�vitera bien des copies inutiles, et t'apportera sans doute un gain �norme tant en terme de temps d'ex�cution qu'en terme d'utilisation de m�moire.

    Essayes de limiter au maximum les acc�s en lecture ou en �criture � des fichiers: les disques durs ont, vraiment, des performances catastrophiques compar� � la RAM, sans oublier qu'il faut fatalement un certain temps pour acc�der aux endroits o� se trouvent les fichiers sur le disque dur (d�placement des t�te de lecture, fin du tour pour acc�der � l'endroit exact, etc)

    V�rifie tes algorithmes, il est souvent "facile" de gagner en performances en �vitant d'entrer dans une boucle ou en faisant les choses "dans le bon ordre" (mais le profiling te dira surement o� il est int�ressant de revoir l'algorithme ) et quand tu crois avoir fini, rev�rifie les

    Pour ce qui est du profiling, cela d�pend �norm�ment des outils que tu utilises:

    La chaine de compilation Gcc vient, par exemple, avec un programme nomm� gprof qui sert souvent de base au profiling, alors que certains outils sont pr�vus pour fonctionner avec Visual Studio et d'autres encore avec d'autres chaine d'outils
    A m�diter: La solution la plus simple est toujours la moins compliqu�e
    Ce qui se con�oit bien s'�nonce clairement, et les mots pour le dire vous viennent ais�ment. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 f�vrier 2014
    mon tout nouveau blog

  7. #7
    Membre chevronn�
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    329
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 329
    Par d�faut
    Citation Envoy� par thomMonteillet Voir le message
    - j'ai un objet "A" � qui on fourni � travers la m�thode "input" un vecteur
    - en sortie cet objet "A" � travers la m�thode "output" me donne une matrice "B"
    - et je peux avoir environ 80000 objets "A" diff�rents. ce que je fais pour le moment c'est une boucle: pour le premier objet je fais le calcul, une fois fini je fais le calcul avec le 2eme objet, une fois fini avec le troisi�me...etc
    - si je fais les choses en parall�le il est clair que je vais gagner du temps vu que mes objets sont totalement ind�pendants
    OpenMP pour ta boucle sur les 80000 objets (gros grain), et SSE/AVX/Whatever pour les traitement � l'int�rieur des objets (grain fin).
    Encore une fois, c'est � la fin...

  8. #8
    Membre confirm�
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    75
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 75
    Par d�faut
    salut tous et merci pour vos conseils !
    Citation Envoy� par koala01 Voir le message
    Essayes de passer tous les arguments qui ne sont pas des type primitifs par r�f�rence (�ventuellement constante si la fonction qui les prend ne doit pas les modifier) et non par valeur: cela t'�vitera bien des copies inutiles, et t'apportera sans doute un gain �norme tant en terme de temps d'ex�cution qu'en terme d'utilisation de m�moire.
    oui, c'est que que je fais actuellement (je le fais pour toutes les variables, du double/int aux vector et objets).

    Citation Envoy� par koala01 Voir le message
    Essayes de limiter au maximum les acc�s en lecture ou en �criture � des fichiers: les disques durs ont, vraiment, des performances catastrophiques compar� � la RAM, sans oublier qu'il faut fatalement un certain temps pour acc�der aux endroits o� se trouvent les fichiers sur le disque dur (d�placement des t�te de lecture, fin du tour pour acc�der � l'endroit exact, etc)
    �a c'est une bonne id�e que je vais m'empresser de faire.

    Citation Envoy� par koala01 Voir le message
    V�rifie tes algorithmes, il est souvent "facile" de gagner en performances en �vitant d'entrer dans une boucle ou en faisant les choses "dans le bon ordre" (mais le profiling te dira surement o� il est int�ressant de revoir l'algorithme ) et quand tu crois avoir fini, rev�rifie les
    Moi, je vais reparcourir tous mon programme et v�rifier ceci.
    en fait ce qui est le plus long dans un programme c'est les boucles ?
    par exemple si j'ai plusieurs "if" imbriqu�s �a prend pas trop de temps ?
    (j'ai fais attention pour les boucles mais les "if" j'en ai mis plein car sans forcement optimiser...)

    au fait la perrsonne qui m'avait dit d'utiliser des "it�rateur" � la place de mes boucles "for" classique m'avait dit n'importe quoi ? on gagne pas forcement en temps de calcul ? (ou ce n'est pas significatif en tout cas?)

    Citation Envoy� par koala01 Voir le message
    Pour ce qui est du profiling, cela d�pend �norm�ment des outils que tu utilises:
    La chaine de compilation Gcc vient, par exemple, avec un programme nomm� gprof qui sert souvent de base au profiling, alors que certains outils sont pr�vus pour fonctionner avec Visual Studio et d'autres encore avec d'autres chaine d'outils
    D'accord, je vais me tourner vers "gprof" je pense car �a fait plusieurs fois que je le vois passer (en plus je d�teste visual studio)

    Citation Envoy� par Joker-eph Voir le message
    OpenMP pour ta boucle sur les 80000 objets (gros grain), et SSE/AVX/Whatever pour les traitement � l'int�rieur des objets (grain fin). Encore une fois, c'est � la fin...
    OK, merci pour le conseil

  9. #9
    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
    Citation Envoy� par thomMonteillet Voir le message
    par contre je suis certain que la parall�lisation va me faire gagner du temps car voici comment mon code fonctionne :

    - j'ai un objet "A" � qui on fourni � travers la m�thode "input" un vecteur
    - en sortie cet objet "A" � travers la m�thode "output" me donne une matrice "B"
    - et je peux avoir environ 80000 objets "A" diff�rents. ce que je fais pour le moment c'est une boucle: pour le premier objet je fais le calcul, une fois fini je fais le calcul avec le 2eme objet, une fois fini avec le troisi�me...etc
    - si je fais les choses en parall�le il est clair que je vais gagner du temps vu que mes objets sont totalement ind�pendants
    Ce n'est pas si �vident que tu gagnes du temps : Si � l'int�rieur de ton traitement, tu acc�des � une ressource partag�e, par exemple le disque dur, il y a des chances que si tu parall�lises, tout le temps soit pass� � attendre cette ressource. Un cas plus courant der essource partag�e pouvant insidieusement plomber les performances en parall�le est la m�moire cache.

    Ensuite, tu ne gagneras pas plus de temps que le nombre de processeurs de ta machine. Ce qui peut te sembler tr�s bien (et l'est probablement), mais n'a d'int�r�t que si � la base tu pars de code qui est d�j� raisonnablement optimal. Si tes algorithmes sont mauvais, les remplacer peut provoquer des gains tr�s importants (j'ai d�j� gagn�e des *1000 pour 1h de travail...) et d'autant plus importants que ton volume de donn�es est grand. Ensuite, travailler en g�rant bien la m�moire cache/la m�moire/le disque peut aussi avoir des impacts importants, minimiser le nombre d'allocations m�moire aussi.

    Une fois que ce sera fait, il sera temps de regarder la parall�lisation, qui est plus complexe � mettre en place, et qui en plus a besoin des am�liorations cit�es au dessus pour pouvoir vraiment �tre rentable.
    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.

  10. #10
    Membre confirm�
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    75
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 75
    Par d�faut
    Citation Envoy� par JolyLoic Voir le message
    Ce n'est pas si �vident que tu gagnes du temps : Si � l'int�rieur de ton traitement, tu acc�des � une ressource partag�e, par exemple le disque dur, il y a des chances que si tu parall�lises, tout le temps soit pass� � attendre cette ressource. Un cas plus courant der essource partag�e pouvant insidieusement plomber les performances en parall�le est la m�moire cache.
    d'accord. je pense avoir compris.

    Citation Envoy� par JolyLoic Voir le message
    travailler en g�rant bien la m�moire cache/la m�moire/le disque peut aussi avoir des impacts importants, minimiser le nombre d'allocations m�moire aussi.
    que veux tu dire par minimiser le nombre d'allocations m�moire ? minimiser le nombre de variables ? ou minimiser le nombre d'allocations dynamiques ?

    m�moire cache c'est bien m�moire RAM ? le disque OK. Mais qu'appel tu m�moire ? pour moi il y a juste m�moire RAM et disque non ?

    Citation Envoy� par JolyLoic Voir le message
    Une fois que ce sera fait, il sera temps de regarder la parall�lisation, qui est plus complexe � mettre en place, et qui en plus a besoin des am�liorations cit�es au dessus pour pouvoir vraiment �tre rentable.
    j'ai une derni�re question sur le parall�lisme afin de comprendre ce que c'est:
    il y a en gros trois fa�on de proc�der :
    1) si un a un PC avec plusieurs processeurs on va faire du multithread et le programme va envoyer vers chaque processeurs une partie du calcul.
    2) si on a d'autres PC sous la main, ou un cluster. On peut faire une parall�lisation qui va envoyer des calculs sur chacunes des m�moires disponibles sur les autres PC, c'est ce que l'on appel la m�moire distribu�e? (et ceci on ne le fait pas avec du multithread mais plutot avec des messages comme MPI ?)
    3) la derni�re m�thode est la m�me que la 2) mais les diff�rentes m�moires disponibles sont regroup�es donc on parle de m�moire partag�e.

    Si je fais un programme en multithread pourra t il �tre utilis� ensuite pour faire du 2) et 3) ? � mon avis non ?
    et vis et versa, si je fais un programme pour 2) sera t il utilisable par 3) et 1) ?

    je voudrais juste comprendre les diff�rentes parall�lisation qui existe (et pourquoi utiliser l'une plut�t que l'autre). merci

  11. #11
    Membre chevronn�
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    329
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 329
    Par d�faut
    Citation Envoy� par thomMonteillet Voir le message
    salut tous et merci pour vos conseils !


    oui, c'est que que je fais actuellement (je le fais pour toutes les variables, du double/int aux vector et objets).
    Je ne vois pas l'int�r�t pour les types primitifs, ni m�me pour un objet tr�s petit d'ailleurs, �a risque plut�t d'�tre contre-productif.


    Moi, je vais reparcourir tous mon programme et v�rifier ceci.
    en fait ce qui est le plus long dans un programme c'est les boucles ?
    par exemple si j'ai plusieurs "if" imbriqu�s �a prend pas trop de temps ?
    (j'ai fais attention pour les boucles mais les "if" j'en ai mis plein car sans forcement optimiser...)
    Les if sont potentiellement co�teux, mais seulement s'ils sont sur un chemin critique.

    au fait la perrsonne qui m'avait dit d'utiliser des "it�rateur" � la place de mes boucles "for" classique m'avait dit n'importe quoi ? on gagne pas forcement en temps de calcul ? (ou ce n'est pas significatif en tout cas?)
    Ce n'est pas automatique, �a d�pend sur quoi tu it�res, et quel types d'op�ration tu fais dans la boucle sur ton conteneur.
    A la base il n'y a jamais de recettes magique, il faut que tu cherches plut�t � comprendre ce qui se passe et quelle est la diff�rence en terme d'ex�cution.

    �a rejoint le fait de passer des int par const ref pour gagner du temps parce que quelqu'un aura dit que les references constantes c'est plus rapide


    Citation Envoy� par thomMonteillet Voir le message
    que veux tu dire par minimiser le nombre d'allocations m�moire ? minimiser le nombre de variables ? ou minimiser le nombre d'allocations dynamiques ?
    new/delete (malloc/free). Genre ne pas faire �a dans une boucle.

    m�moire cache c'est bien m�moire RAM ? le disque OK. Mais qu'appel tu m�moire ? pour moi il y a juste m�moire RAM et disque non ?
    Non pas du tout, il y a plusieurs niveaux de m�moire. Google "m�moire cache" et wikipedia doit sortir en premier : http://fr.wikipedia.org/wiki/M%C3%A9moire_cache



    j'ai une derni�re question sur le parall�lisme afin de comprendre ce que c'est:
    il y a en gros trois fa�on de proc�der :
    1) si un a un PC avec plusieurs processeurs on va faire du multithread et le programme va envoyer vers chaque processeurs une partie du calcul.
    2) si on a d'autres PC sous la main, ou un cluster. On peut faire une parall�lisation qui va envoyer des calculs sur chacunes des m�moires disponibles sur les autres PC, c'est ce que l'on appel la m�moire distribu�e? (et ceci on ne le fait pas avec du multithread mais plutot avec des messages comme MPI ?)
    3) la derni�re m�thode est la m�me que la 2) mais les diff�rentes m�moires disponibles sont regroup�es donc on parle de m�moire partag�e.
    La 3 n'existe pas (en pratique). Le 1 est un mod�le � m�moire partag�e.

    Si je fais un programme en multithread pourra t il �tre utilis� ensuite pour faire du 2) et 3) ? � mon avis non ?
    et vis et versa, si je fais un programme pour 2) sera t il utilisable par 3) et 1) ?
    Oui, c'est orthogonal, sachant que 2) est un peu plus difficile que 1).

    je voudrais juste comprendre les diff�rentes parall�lisation qui existe (et pourquoi utiliser l'une plut�t que l'autre). merci
    Ne pas oublier la vectorisation (SSE/AVX), �a peut offrir un gain int�ressant selon le type de calcul.

  12. #12
    Membre confirm�
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    75
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 75
    Par d�faut
    Citation Envoy� par Joker-eph Voir le message
    Je ne vois pas l'int�r�t pour les types primitifs, ni m�me pour un objet tr�s petit d'ailleurs, �a risque plut�t d'�tre contre-productif.
    En fait je me suis dis que �a pouvais �tre bien d'avoir des r�f�rences car �a permet d'�tre certain que l'on travail bien sur la valeur original et non une copie. Ensuite, je les mets le plus souvent possible en constante afin de ne pas avoir de probl�mes lorsque j'echange des donn�es entre fonctions.

    mais si c'est r�ellement couteux en temps de calcul je vais enlever ceci

    Citation Envoy� par Joker-eph Voir le message
    Les if sont potentiellement co�teux, mais seulement s'ils sont sur un chemin critique.
    qu'appel tu chemin critique ? un endroit o� une boucle passe plusieurs fois ?

    Citation Envoy� par Joker-eph Voir le message
    Ce n'est pas automatique, �a d�pend sur quoi tu it�res, et quel types d'op�ration tu fais dans la boucle sur ton conteneur.
    A la base il n'y a jamais de recettes magique, il faut que tu cherches plut�t � comprendre ce qui se passe et quelle est la diff�rence en terme d'ex�cution.
    d'accord, donc si je n'utilise pas d'it�rateurs �a va pas changer grand chose.
    je zap les it�rateurs alors et je reste avec mes boucles.

    Citation Envoy� par Joker-eph Voir le message
    new/delete (malloc/free). Genre ne pas faire �a dans une boucle.
    �a marche, merci du conseil
    en fait je n'utilise jamais ceci car je travail avec des "vector" (donc je ne dois ne pas les initialisez dans des boucles si j'ai bien compris).

    Citation Envoy� par Joker-eph Voir le message
    Non pas du tout, il y a plusieurs niveaux de m�moire. Google "m�moire cache" et wikipedia doit sortir en premier : http://fr.wikipedia.org/wiki/M%C3%A9moire_cache
    d'accord, je vais regarder. merci

    Citation Envoy� par Joker-eph Voir le message
    La 3 n'existe pas (en pratique). Le 1 est un mod�le � m�moire partag�e.
    Oui, c'est orthogonal, sachant que 2) est un peu plus difficile que 1).
    Ne pas oublier la vectorisation (SSE/AVX), �a peut offrir un gain int�ressant selon le type de calcul.
    je vais regarder merci !

Discussions similaires

  1. temps de calcul RSA
    Par othland dans le forum Langages de programmation
    R�ponses: 2
    Dernier message: 13/03/2006, 11h16
  2. Temps de calcul d'un algo
    Par R�miz dans le forum VB 6 et ant�rieur
    R�ponses: 7
    Dernier message: 23/12/2005, 13h52
  3. temps de calcul sius VC++ !!
    Par Axiome dans le forum MFC
    R�ponses: 16
    Dernier message: 13/12/2005, 09h57
  4. Temps de calcul avec deux �crans
    Par Shaga dans le forum OpenGL
    R�ponses: 2
    Dernier message: 14/11/2005, 09h24
  5. temps de calculs extremement long !!
    Par salseropom dans le forum C++
    R�ponses: 9
    Dernier message: 19/01/2005, 20h12

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