Télécharger le zip
Les maths, c'est assurément indispensable, codé correctement c'est encore mieux.Ta boucle fait i instructions de trop.i = 0;do { puissance[i] = 0; i++;} while(i <= 255);traduite par compilo, elle donne:mov edx, _puissance ;// adresse tableauxor eax, eax ;// i = 0doI:mov dword ptr[edx+eax*4], 0add eax, 1cmp eax, 255 ;// INUTILE ET DONC NUISIBLE AUX PERFSjbe short doIToujours tendre vers 0 quand on peut:i = 255;do { puissance[i] = 0; i++;} while(--i >= 0);donnera cette fois:mov edx, _puissance ;// adresse tableaumov eax, 255 ;// i = 0doI:mov dword ptr[edx+eax*4], 0sub eax, 1jns short doION gagne tout net 1 comparaison par tour de boucle, pas négligeable du tout.
Oui mais quand on fait trop d'optimisation, on devient distrait, et on oublis d'enlever i++, tout ça pour économiser 0.5 pouillème de seconde. Mieux vaux se concentrer sur la clarté du code source, et garder l'optimisation que pour les cas où on y gagne vraiment.
Simplement du au copier/coller qu'il ne faudrait jamais faire avec du code mais ça ne retire rien à ce que j'ai dit plus haut."trop" d'optimisation, je ne vois même pas ce que ça veut dire.
saluton divise n par 2 tant que l'on peutensuite on divise n par 2i+1 pour i variant de 1 à racine carré de n (au maximum) divisée par 2 tant que c'est possible, et surtout quand n diminue on recalcule sa racine carréta boucle serait alorsi = 1;racinecarre = racinecarrede(n); while ((i+=2) <= racinecarre) { if (n % i == 0) { ... n /= (i-=2); racinecarre = racinecarrede(n); // racinecarrede: fonction à optimiser car la version qui // renvoie un double ne nous sert à rien }}
pour ce qui st de l'optimisation encore je ne sais pas si ce n'est pas mieux:while ((i+=2) <= racinecarre) { if (n % i == 0) { n /= i; while (n % i == 0) { compte++; n /= i; } ... // tu enregistres ici dans un tableau les diviseurs compte=0; racinecarre = racinecarrede(n); // racinecarrede: fonction à optimiser car la version qui // renvoie un double ne nous sert à rien}
> "trop" d'optimisationSouvent l'optimisation se fait au détriment de la clarté du code, laquelle est importante pour la maintenance par exemple.
Je vous remercie à tous pour vos suggestions.Pour l'instant j'ai du TAF au travail.Je les utiliserais donc plus tard.Mais je les ai lus (par acquis de conscience)... au moins.Et je les trouves très intéressantes.
Se souvenir du profil
Mot de passe oublié ? / Activation de compteCréer un compte
1 872 600 membres 41 nouveaux aujourd'hui 16 150 membres club