Comparaison c et sse2/3 (win32)

Description

Suite à discussion sur cette source:
http://www.cppfrance.com/code.aspx?ID=41170
voici la démo de comparaison.

IMPORTANT AVANT TOUT:
Lancer Excpt.exe, si affiche:
- ERR, alors STOP ne pas aller plus loin.
- 2, SSE2 prise en charge.
- 3, SSE3 ok, vous pourrez mettre en comment la ligne "#define BNSSE3NOT" de cumSSE.c et recompiler.
Le code de cela est également dans un zip, ne modifier QUE si vous savez ce que vous faites.
-------------------------

Un tableau de 6336 float est créé.
Il s'agit de retourner INT(SUM(SQRT(tabFloat))) avec la seule contrainte que si un float est < 1.0 alors le considérer 1.0, voila tout.
int __fastcall cumSqrt_C(float *pflt)
{
float f, r = 0.0;
int i = 6335;
do {
f = pflt[i];
r += ((f > 1.0) ? sqrt(f): 1.0);
} while(i--);
return (int) (r);
}

Le fichier cumSSE.c contient la version SSE2, le benef de perf est énorme. Si on augmente la taille tableau, les écarts deviennent rapidement abyssaux.
Il y a dialogbox pour tester les 2 à répétition.
Si qlq'un veut améliorer les perfs en C (fichier cumC.c ONLY) de qlq manière que ce soit, qu'il amène et on testera, je suis preneur.
Je précise que cet exe est déjà compilé option SSE2 et full optimisation.

Qu'on évite de continuer à se prendre le choux à se demander si c'est utile d'optimiser, quand on est payé pour (et pas trop mal), on a autre chose à faire que de philosopher là dessus.
Cette mini fonction est une des centaines contenues dans le calculateur, on boucle une centaine de fois avec contraintes différentes sur des dizaine de milliers d'enregistrement (1 ligne de float comme exemple par enreg).
Il est clair qu'un gros compte qui attend ses stats entre 2 fluctuations des cours de bourse se fout complètement (ou presque) du prix du calculateur et des specs matérielles demandées.
Code générique, portable, ceci cela et autre baliverne n'a rien à faire ici, on veut des perfs et basta.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.