draluorg
Messages postés625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 novembre 2010
-
26 avril 2008 à 13:14
draluorg
Messages postés625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 novembre 2010
-
28 avril 2008 à 22:55
Salut a tous,
Voila je suis entrain de faire un ptit bench pour me faire une idee de la puissance "brute" d'un pc et je suis un peu surpris par les resultats
Deja le tableau donné par wiki me semble assez bizarre non ?
http://en.wikipedia.org/wiki/Million_instructions_per_second#Million_instructions_per_second un p4 peut il vraiment faire 9700 millions d'operations/secondes ? ou bien ai-je une autre definition du mot operation ?
en plus de ne pas dutout optenir des resultats de l'ordre du tableau, je trouve bizarre 2 ou 3 points comme le fait que les doubles soient plus rapide que les int64 ?
Voici les resultats que j'obtiens exprimé en millons d'operation/s sur un x86
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 26 avril 2008 à 13:32
Tout sera faux pour cause de langage évolué, tu n'as pas la maitruise du code généré par le compilo donc impossible de mesurer le vrai nombre d'opérations faites.
Les benchs de ce genre ne peuvent se faire qu'en ASM.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 26 avril 2008 à 20:15
Surement normal du fait que la multiplication sur double (ou float) est inline dans le code alors que le CRT pour multiplication et division sur __int64 fait un call vers __llmul ou __lldiv.
__llmul , c'est 3 multiplications et 2 additions en interne, sans compter l'empilage, les transferts (MOV), le dépilage et le retour chez l'appelant.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 28 avril 2008 à 17:46
Jamais d'ASM dans une fonction C, tu ne sauras toujours rien d'où le compilo sauvegarde les registres (avant ou après les perfCounters) ni rien d'autre. Une fonction doit être full ASM ou full C, jamais de mix.
__declspec(naked) ProtoFonctionIci();
pour full ASM.