Release vs debug en asm !!!!

Résolu
sajid_morad Messages postés 31 Date d'inscription vendredi 27 février 2004 Statut Membre Dernière intervention 26 mars 2009 - 24 nov. 2004 à 17:23
bebert37 Messages postés 38 Date d'inscription jeudi 17 juillet 2003 Statut Membre Dernière intervention 16 février 2005 - 24 nov. 2004 à 17:55
salut tout le monde, voulant optimisé une boucle qui prend un peu de temps je l ai réécri en asm, en effet j ai pu optimisé le temps en optimisant le code asm tout ça en mode debug, mai en release j ai remarqué que le temps que prend l éxecution de la boucle en code C est plus court que le temps en code asm qui est déja optimisé :shock) , normalement ça doit étre le contraire, je comprent pas pourkoi?

j aimerai bien comprendre pourkoi ce comportement? et comment optimisé mon code , et Merci d avance

2 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
24 nov. 2004 à 17:43
ben c'est simple, tu remets le tout en C mode relesase et tu compiles en demandant la sortie du listing 'asm avec source'.
Tu edites le asm produit par le compilo et tu recommnces avec TA partie asm, te restera plus qu'a comparer.
Comme je te lai deja dit, si tu ne fais qu'un petit morceau de fonction en asm inline, tu ne feras generalement que gener l'optimisation du compilo et tu obtiendras de ce fait un moins bon code. Les compilos modernes produisent un tres bon code, il faut coder la fonction complet en asm 'declspec(naked)' et une grande habitude de la chose avant d'esperer faire mieux.

ciao...
BruNews, MVP VC++
3
bebert37 Messages postés 38 Date d'inscription jeudi 17 juillet 2003 Statut Membre Dernière intervention 16 février 2005
24 nov. 2004 à 17:55
Comme solution je te proposerai :
1 Le fait de passer de debug en release accelere enormement le code car toute la gestion de debug est supprimer.
2 Le compilateur possède un mode optimisation du code ... qui te fais des trucs de oufs en utilisant les propriétés des processeurs comme par exemple le fait sur une boucle qui va de 0 à X, il va faire tourner la boucle de X à 0 car la comparaison entre 2 valeur prend moins de cycle machine si on compare 1 valeur a 0 ou 2 valeurs entre elles.

(enfin moi j'dit ça... j'dit rien )
C'est peut être pas tout à fait exact, mais l'idée est la.
voila

Ce sont les tonneaux vides et les hommes pleins qui font le plus de bruit
:big)
0
Rejoignez-nous