Alors quelques optimisations en vrac :
1) Ne pas hésiter à utiliser la pré-incrémentation (écrire ++i au lieu de i++) (le programme incrémente alors i AVANT d´éxécuter la fct dans laquel ++i est)
Par ex :
v = 0;
if(v++ == 1)
{
...
}
le if retourne false, vous perdez un cycle bêtement, alors que if(++v == 1) lui, retourne true;
2) Ne pas oublier d´utiliser les mots "const" dans les définitions de fcts lorsque la variable n´est pas censé être modifiée, ça permet au compilo d´optimiser un peu plus.
unsigned long Square(const long i) au lieu de unsigned long Square(long i);
3) Eviter les :
if(a == b)
c = true;
else
c = false;
c´est aussi rapide d´écrire c = a==b;
4) Eviter les imbrications de boucles, surtout quand elles ont peu d´itérations, développer les.
for(int i=0; i<3; i++)
{
mon_tableau[i] = ma_fonction();
}
devient :
mon_tableau[i=0] = ma_fonction();
mon_tableau[++i] = ma_fonction();
mon_tableau[++i] = ma_fonction();
5) Dans le domaine de la 3d, évitez l´utilisation abusive des matrices !
Par exemple, un objet à sa propre matrice qui définit sa transformation. Je veux faire un Scale sur l´objet, alors je fais (en D3D) :
void Mesh::Scale(const float x, const float y, const float z)
{
D3DXMATRIX Scale;
D3DXMatrixScaling(&, x, y, z);
this->Matrix *= Scale;
}
Bon, ça a l´avantage d´être court et simple, mais est-ce vraiment efficace ? N´hésitez pas à développer vous même les calculs, pour éviter un maximum les opérations inutiles.
Bon, ça va sembler évident à certains ce que j´ai dit, mais en tout cas c´était des erreurs et des étourderiesq que je faisais, donc c´est pas impossible que d´autres les fasse aussi 