StephC_int13
:
CoderMan
:
StephC_int13
:
CoderMan :
for(Y=0;Y<240;Y++) par for(Y=239; Y--; )
for(X=0;X<320;X++) par for(X=319; X--; )
En realité le compilateur arrive souvent à optimiser lui même ceci.
Mais c'est pas une mauvaise idée de le faire, en effet, enfin seulement dans la inner loop, pour le reste c'est negligeable.
Justement non, le compilateur ne sais pas interpréter si le code dans le for peut être utilisé à l'envers, c'est a dire en diminuant la variable X ou Y alors que celle ci est à la base incrémenté.
Sisi, si les compteur de boucle ne sont pas utilisés dans la boucle, "le compilo" sait compter à l'envers.
Je l'ai verifié en analysant du code generé, il sait d'ailleurs faire des tas de trucs tordus mais manque souvent de bon sens, helas.
for(Y=0;Y<240;Y++) par for(Y=239; Y--; )
Je suis d'accord pour dire que certain compilateur optimise très bien mais dans ce cas là, c'est impossible, je penses pas que certains compilateurs soit capable d'interpreter le contenue d'une boucle de ce type.
// exemple ( qui ne rime a rien certe mais tout programme mérite son code, le compilateur ne décide pas si le programme est inutile ou pas

)
for (x=0;x<63999;x++)
{
Video[x]=x;
Video[x+1]=1;
}
le résultat dans video sera { 0,1,2,3,4,5,6,7,8,..... };
{
Si certain compilateur compile automatiquement comme tu le prétend ca donne ceci
//
for (x=63999;x--)
{
Video[x]=x;
Video[x+1]=1;
}
le résultat dans video sera { 0,1,1,1,1,1,1,1,1,..... };
C'est pourquoi tu te trompe lorsque tu affirmes que certain compilateur optimise automatiquement ce genre d'optimisation.
Certain compilateur sont malin mais pas encore pour analyser entièrement le programme et ce que cela va donner.
Si tu fait de l'asm, tu sais que décrementer un registre pour créer un "for" et beaucoup plus rapide et personnellement, je préfère que le compilateur fait son travail d'optimisation avec un minimum d'optimisation c# vers ASM en aident en quelque sorte le compilateur a faire le bon choix.