Accueil > Forum > > > > fonctionne en debug mais pas en release?
fonctionne en debug mais pas en release?
mercredi 30 novembre 2005 à 02:39:46 |
fonctionne en debug mais pas en release?

serom00
|
Voila je travail sous Visual 7
Je travail sur l'implementation d'un algorithme que je dois optimiser la vitesse d'execution. Pour se faire j'utilise les fonction QueryPerformanceFrequency et QueryPerformanceCounter pour mesurer le temps de d'execution.
Tout se passe a merveille en mode debug, mais en release sa foire: en fait je crois que le probleme viens de QueryPerformanceFrequency, car en debug il mesure une frequence de 3579545hz et 80hz!! en release.
Je voudrai savoir si la valeur de cette frequence est censee etre differente en debug et en release. Car si j'applique la frequence mesuree en debug sur les mesure de temps effectuee en Release et que je fais le calcul par moi meme, je trouve un temps d'execution coherent.
voila le code:
#include <stdio.h> #include <windows.h> #include <string.h> #include <ctype.h> #include <conio.h> ....
long FreqHorloge,beginTime,endTime; int main (void) { float T; int i,j;
.......... QueryPerformanceFrequency((LARGE_INTEGER*)&FreqHorloge); QueryPerformanceCounter((LARGE_INTEGER*)&beginTime); .............................................. .............................................. ma fonction a analyser .............................................. .............................................. QueryPerformanceCounter((LARGE_INTEGER*)&endTime); T=(endTime-beginTime)/(float)FreqHorloge; printf("Algorithm executed in %f sec\n",T); printf("freqHorloge = %d, begin = %d, end= %d \n",FreqHorloge,beginTime,endTime); // Leave properly printf("Press <Enter> to end.\n"); getchar(); return 0; }
Donc voila, j'espere que quelqu'un pourra m'aider J'en profite pour demander si quelqu'un ne connaitrai pas des bonnes sources pour apprendre a optimiser du code sous Visual: Bouquin, tutorial, page web,etc....Ca me serai aussi tres utile Voila merci d'avance
|
|
mercredi 30 novembre 2005 à 08:51:01 |
Re : fonctionne en debug mais pas en release?

buno
|
Par définition, caluculer le temps d'exécution d'un code ne se fait pas en Debug mais en Release pour être "indépendant de Visual"
Buno ---------------------------------------- L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
|
|
mercredi 30 novembre 2005 à 09:23:20 |
Re : fonctionne en debug mais pas en release?

ymca2003
|
Réponse acceptée !
Les variables FreqHorloge,beginTime,endTime ne sont pas du bon type. Les fonctions PerfTimer demandent des LARGE_INTEGER qui sont en fait des entiers sur 64 bits. Or tu les déclares en long (32 bits) => il y a un écrasement des variables.
Pour un peu qu'en Debug les variables soit alignées sur 8 octets et en Release sur 4, ça marche en Debug mais pas en Release ( dans le cas d'alignement 8 octets, 4 octets vides sont laissés après chaque variable et du coup il n'y a pas décrasement).
Il faut donc déclarer : LARGE_INTEGER FreqHorloge,beginTime,endTime; ou (sous Visual) unsigned __int64 FreqHorloge,beginTime,endTime; et caster comme tu l'a fait en LARGE_INTEGER(et là sera OK car les var sont compatibles)
Ensuite pour afficher tes var il faudra faire %I64u (ou%I64d) au lieu de %d
Si tu es sous visual il y a une option de linker appelée "Profiling" qui permet de faire ce que tu souhaites. Après avoir activer cette option (Project->settings, onglet link, categorie General) er recompiler le tout (Rebuil all) il suffit de démarrer le prog par Build->Profile. A la fin de l'exécution tu auras des statistiques sur les fcts appelées et leur temps d'exec. PS : ça c'est pour VC6, pour autre visual, doit exister mais je ne sais pas les manip à faire.
|
|
mercredi 30 novembre 2005 à 11:38:44 |
Re : fonctionne en debug mais pas en release?

BruNews
|
Réponse acceptée !
Pour résumer:
LARGE_INTEGER lideb, lifin;
QueryPerformanceCounter(&lideb); // LANCE TA FONCTION ICI QueryPerformanceCounter(&lifin); lifin.QuadPart -= lideb.QuadPart;
Te suffira de comparer les différentes valeurs de lifin.QuadPart suivant optimisations de tes fonctions.
et ne pas faire de tests en debug mais compilé en release avec toutes optimisations du compilo.
ciao...
[ Lien ] BruNews, MVP VC++
|
|
mercredi 30 novembre 2005 à 23:33:43 |
Re : fonctionne en debug mais pas en release?

serom00
|
Ok,
merci bien pour ce coup de main qui m'a ete bien utile.
Pour ce qui est du profiling, je ne sais pas pourquoi, mais la fonction n'est pas disponible sur ma version de visual. en tout cas je la trouve pas. J'avais deja chercher pas mal de temps avant. Pour cela j'utilise Intel Vtune Performance Analyzers. Mais c'est sur que se serai plus pratique d'avoir acces au profiling directement sous visual.
Desole si je met si longtemps a repondre, mais je suis a l'autre bout de la terre et j'ai 10h de decalage avec vous.
Merci encore
|
|
Cette discussion est classée dans : include, debug, release, freqhorloge, begintime
Répondre à ce message
Sujets en rapport avec ce message
debug vs release [ par coockiesch ]
Hello!J'aimerais savoir les différences entre la compilation release et la compilation debug...Quels sont leurs avantages et leurs inconvéniants.Merci
Debug & Release [ par hilairenicolas ]
Bonjour à tous,j'ai un probleme étrange. Je developpe un .ocx qui n'a pas le meme comportement quand je le compile en mode debug ou en mode release. E
assertion failed! + debug VS release [ par sro ]
Bonjour,j'ai un ptit prgme cree a partir d'un "devolpement toolkit" pour webcam logitech. J'ai deja fait marche ce programme sans pb, mais maintenant
new - debug / release [ par magic_Nono ]
PB du new.... alors que ça passe avec des alloc classiquesOn me conceil d'utiliser des new plutot que des malloc en C++très bien maisvoici un petit mo
mode debug / mode release avec Visual C++ [ par franckydeluka ]
Bonjour à tous,je viens de créer une dll en mode débug et quand je l'appelle à partir d'un autre programme ça marche nickel sans problème.ensuite je l
Visual C++ 6.0: générer une version de debug/release [ par oh81 ]
Bonjour, J'ai installé visual C++ sur mon Pc depuis ... J'ai remarqué que quand je remplace "win32 debug" par "win32 release" ou l'inverse dans "Pro
run debug != run release [ par Galmiza ]
Salut,mon programme ne tourne pas de la meme facon quand je le compile en release ou en debug. C'est une sorte de moteur 3D, la difference est visible
Debug | Release [ par 3psilon ]
Slt,J'aurais aimer avoir quelques informations sur les modesdebug et release de VC 6.J'ai bien compris que, en mode debug, le compilo ajoute des infor
tri listview ( debug - release ) [ par 3psilon ]
Bonjour a tous,J'explique mon probleme :A titre pédagogique, j'ai crée une application (sans mfc avec VC 6), ou j'ai crée des listviews.Je rempli les
Debug - Release - Probleme à l'execution... [ par Matt67 ]
Bonsoir,Voici un morceau de code qui recupere le chemin de l'application et change l'extention en .ini (Dites moi si mon code est bien 'codé')LPTSTR l
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|