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

MFC Discussion :

temps de calcul sius VC++ !!


Sujet :

MFC

  1. #1
    Membre habitué
    Inscrit en
    Septembre 2002
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 230
    Points : 148
    Points
    148
    Par défaut temps de calcul sius VC++ !!
    Bonjour,

    J'ai un code C que j'avais développé sous Linux.
    Le temps de calcul de mon algorithme était de 30 ms sous une machine PIII 800 MHz.
    J'ai décidé d'importer mon vieux code sous VC++ 6. J'ai fait le nécéssaire pour que mon code compile correctement sous VC++. Mais voilà à ma grande surprise, le temps de calcul est de 130 ms qui est très très loin des 30 ms que j'avais sous Linux avec cette fois un processeur PIV à 3 Ghz.

    Je ne comprends pas !!! Avec une machine pratiquement 4 fois plus puissante, le même algo demande pratiquement 4 fois plus de temps à être exécuté !!!!

    Y a t-il une explication à ce phénomène? Peut on y remédier?

    Merci.
    L'union fait la force.

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    Tu as compilé ton executable en release ?

  3. #3
    Membre habitué
    Inscrit en
    Septembre 2002
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 230
    Points : 148
    Points
    148
    Par défaut
    oui, je l'ai bien compilé en mode RELEASE
    L'union fait la force.

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    tu le mesures comment, le temps de calcul?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    quel est l'algo ? quelles sont les fonctions utilisées ?

  6. #6
    Membre habitué
    Inscrit en
    Septembre 2002
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 230
    Points : 148
    Points
    148
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void CDemoDoc::Stopwatch(int start0stop1)
    {
    	if (start0stop1==0)	QueryPerformanceCounter(&m_swStart);
    	else {
    		QueryPerformanceCounter(&m_swStop);
    		if (m_swFreq.LowPart==0 && m_swFreq.HighPart==0) m_etime = -1;
    		else {
    			m_etime = (float)(m_swStop.LowPart - m_swStart.LowPart);
    			if (m_etime < 0) m_etime += 2^32;
    			m_etime /= (m_swFreq.LowPart+m_swFreq.HighPart * 2^32);
    		}
    	}
    }
    J'utulise Stopwatch(0) au début de mon algo et à la fin Stopwatch(1) pour récupérer le temps de calcul.
    Mon algo fait des traitements sur une image.
    J'utilise CxImage comme bibliothèque pour gérer mes images.
    L'union fait la force.

  7. #7
    Membre habitué
    Inscrit en
    Septembre 2002
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 230
    Points : 148
    Points
    148
    Par défaut
    L'image est stocké dans un tableau deux dimensions.
    Les fonctionnalités sont des fonctionnalités mathématique de base (- + * /).
    L'union fait la force.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 391
    Points : 347
    Points
    347
    Par défaut
    Bonjour

    Utilise tu la commande Sleep qqpart dans ton algo, j'ai vu des differences de temps enormes en fonction des OS et surtout sur XP ou un sleep(1) peut durer jusqu'a 50 ms.

    Cordialement

  9. #9
    Membre habitué
    Inscrit en
    Septembre 2002
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 230
    Points : 148
    Points
    148
    Par défaut
    Non je n'utilise pas la commande sleep
    J'ai essayé de paramétrer les options d'exécution en multi thread mais j'ai des messages d'erreur lors de la compilation. Est ce normal?
    Quel est la meilleure configuration des options d'exécution sous VC++ 6 pour optimiser le temps de calcul.

    Merci
    L'union fait la force.

  10. #10
    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 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    VC++ 8 sera plus performant certainement.
    Il te faut identifier là où ça ralentit (goulot d'étranglement). Tu utilises CxImage : pour faire quoi, de quelle manière ?

  11. #11
    Membre habitué
    Inscrit en
    Septembre 2002
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 230
    Points : 148
    Points
    148
    Par défaut
    j'utilise CxImage pour lire les images BMP, JPG, ...
    Une fois que j'ai lu l'image, je la transforme en tableau 2 dimensions de type byte.
    Je lance mon timer, mon algo de traitement d'images, stoppe mon timer pour récupérer le temps de calcul et finalement je remets le tableau sous format CxImage pour affichage.
    L'union fait la force.

  12. #12
    Membre habitué
    Inscrit en
    Septembre 2002
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 230
    Points : 148
    Points
    148
    Par défaut
    J'ai oublié de vous dire que c'est en miliseconde que mes traitements se font (actuellement en 800 ms) alors qu'une fois j'ai réussi à jouer sur les paramètres d'exécutions et je suis arrivé à 400 ms mais j'en sais plus qu'est ce que j'ai mis comme paramètres de compilation
    L'union fait la force.

  13. #13
    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 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Il ressemble à quoi ton algo ? Tu utilises la STL ? Des objets C++ ?
    Tu as constaté une amélioration entre debug et release ?

  14. #14
    Membre habitué
    Inscrit en
    Septembre 2002
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 230
    Points : 148
    Points
    148
    Par défaut
    oui, il y a une amélioration entre DEBUG et RELEASE.
    En mode Debug, le temps était de 2300 ms et en mode RELEASE de 800 ms.
    J'utilise des commmandes de base :
    _ commande arithméthiques
    _ des boucles For
    _ des switch et des if
    L'union fait la force.

  15. #15
    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 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Bizarre... ça serait 20% de différence avec gcc pourquoi pas, mais un facteur 16 ça parrait difficile à croire. Tu es sûr des tes tests sous les 2 OS ?
    Sinon essaye VC++ 8 pour voir.

  16. #16
    Membre habitué
    Inscrit en
    Septembre 2002
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 230
    Points : 148
    Points
    148
    Par défaut
    Je suis plusque sûre.
    D'ailleurs c'est pour ça que je ne comprends pas !!!
    J'ai pas VC++ 8, donc malheureusement je ne peux pas vérifier.
    L'union fait la force.

  17. #17
    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 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    http://msdn.microsoft.com/vstudio/express/visualc/

Discussions similaires

  1. thread et temps de calculs
    Par salseropom dans le forum POSIX
    Réponses: 8
    Dernier message: 06/09/2006, 10h28
  2. temps de calcul RSA
    Par othland dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 13/03/2006, 11h16
  3. 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
  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