Euh Tzim, les namespaces dans Visual, c’est depuis TREEEEEEEEEES longtemps
'fin bon
C’est surtout une mise à jour de la STL plus que du compilo ce que tu soulignes en fait.
Gloppy : voui je sais je suis gonflé de dire des choses qu’elles sont méchantes ![]()
// add the gravity force to all bodies
for (i=0; i<nb; i++) {
004298B8 cmp edx,esi
004298BA jge 0042991C
004298BC lea esp,[esp]
body[i]->facc[0] += body[i]->mass.mass * world->gravity[0];
004298C0 mov eax,dword ptr [edi+edx4]
004298C3 movss xmm0,dword ptr [eax+1Ch]
004298C8 mulss xmm0,dword ptr [ebx+10h]
004298CD addss xmm0,dword ptr [eax+104h]
004298D5 movss dword ptr [eax+104h],xmm0
body[i]->facc[1] += body[i]->mass.mass * world->gravity[1];
004298DD mov eax,dword ptr [edi+edx4]
004298E0 movss xmm0,dword ptr [eax+1Ch]
004298E5 mulss xmm0,dword ptr [ebx+14h]
004298EA addss xmm0,dword ptr [eax+108h]
004298F2 movss dword ptr [eax+108h],xmm0
body[i]->facc[2] += body[i]->mass.mass * world->gravity[2];
004298FA mov eax,dword ptr [edi+edx*4]
004298FD movss xmm0,dword ptr [eax+1Ch]
00429902 mulss xmm0,dword ptr [ebx+18h]
00429907 addss xmm0,dword ptr [eax+10Ch]
Enfin bon, la quand meme, y’a de l’abus non ? Dans le genre « je sous optimise mon code a donf », je demande le générateur de code SSE. Regarde : il reload « eax » à chaque accès (bordel de zeus, c’est pas sorcier dans le compilo d’optimiser ce genre de choses, ils doivent avoir un indicateur d’utilisation des registres pour savoir où ils en sont non ? et donc se rendre compte que ça sert à rien ?), ensuite la valeur de multiplication n’est pas préchargée (c’est la meme pour TOUTES les itérations).
Et tout ça en fait, c’est dû au fait que le générateur de code SSE n’en est pas un. Il s’agit juste d’un remapping des instructions FPU sur le SSE, et donc il gère ses registres en stack, et donc il les sous exploite
Et moi je dis snif snif parce que la y’a manière d’optimiser ce générateur de code facteur 2 sans s’arracher les cheveux (à mon sens). J’ai pris un exemple standard du code de ODE compilé avec VS.NET 2003. Note que je ne lui reproche pas de pas vectorialiser : ça c’est tout a fait normal ![]()
Voila.
Concernant le VS.NET 2003 et la norme C++, je remarque que mon thread d’a coté reste désespérément vide (et c’est aussi pour ça que je tape sur VS.NET 2003, qui reste pourtant mon compilo préféré
)
na.