Accueil > Forum > > > > bench
bench
samedi 26 avril 2008 à 13:14:57 |
bench

draluorg
|
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 ? [ Lien ]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 | Processeur | Intel(R) Pentium(R) 4 CPU 3.20GHz | | Opérations arithmétiques (entiers 32 bits) | 181 | | Opérations arithmétiques (réels 32 bits) | 80 | | Opérations logiques (entiers 32 bits) | 714 | | Opérations binaires (entiers 32 bits) | 714 | | | Opérations arithmétiques (entiers 64 bits) | 66 | | Opérations arithmétiques (réels 64 bits) | 119 | | Opérations logiques (entiers 64 bits) | 400 | | Opérations binaires (entiers 64 bits) | 333 |
voici le code d'une des fonctions a titre d'exemple, les autre sont codees de la meme facon: __int64 ArithmTestEnt32(){ LARGE_INTEGER start; LARGE_INTEGER stop; DWORD a32 = 5; DWORD b32 = 64; DWORD c32 = 0; dwCurItt = 0; QueryPerformanceCounter(&start); DO: c32 = dwCurItt++; c32 /= a32; c32 -= b32; c32 *= a32; c32 += b32; c32 /= a32; c32 -= b32; c32 *= a32; c32 += b32; c32 /= a32; if (dwCurItt != ITTER_ARRITHM_ENT) goto DO;QueryPerformanceCounter(&stop); return (__int64)(stop.QuadPart - start.QuadPart);} ++ Quand on pose une question on est con 5 minutes, Quand on ne la pose pas on le reste toute sa vie...
|
|
samedi 26 avril 2008 à 13:32:36 |
Re : bench

BruNews
|
Réponse acceptée !
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.
ciao... BruNews, MVP VC++
|
|
samedi 26 avril 2008 à 13:51:55 |
Re : bench

draluorg
|
Salut BruNews,
Ok pour la maitrise du nombre d'operations, mais qu'en est il du fait que j'obtiens de meilleurs perf en double qu'en __int64 ? est-ce logique ?
Quand on pose une question on est con 5 minutes, Quand on ne la pose pas on le reste toute sa vie...
|
|
samedi 26 avril 2008 à 20:15:12 |
Re : bench

BruNews
|
Réponse acceptée !
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.
ciao... BruNews, MVP VC++
|
|
samedi 26 avril 2008 à 20:21:31 |
Re : bench

draluorg
|
erf bin crotte! lol
ok je "comprends" mieux, bon bah j'ai plus qu'a aller me chercher une boite d'aspirine et de me casser la tete avec de l'asm!
Merci pour ces éclairesissements ;)
++
Quand on pose une question on est con 5 minutes, Quand on ne la pose pas on le reste toute sa vie...
|
|
lundi 28 avril 2008 à 17:00:37 |
Re : bench

draluorg
|
re, bon j'ai tester en asm pour l'arithmetique 32 bits, je gagne 47 MIPS mais je suis encore loin du compte... Mais eh quand tu dis asm, est-ce que cela fait une difference si c'est du inline genre: __int64 ArithmTest() {DWORD i = 0; LARGE_INTEGER start; LARGE_INTEGER stop; QueryPerformanceCounter(&start); _asm {
mov eax, 1050d mov ebx, 8888d mov ecx, 100000d mov edx, 20dDO: mul ebx add ecx, edx div ebx sub ecx, edx mul ebx add ecx, edx div ebx sub ecx, edx add ecx, edx sub ecx, edx add i, 1 cmp i, 1000000d jne short DO // mov b, ecx }QueryPerformanceCounter(&stop); return (__int64)(stop.QuadPart - start.QuadPart);} enfin meme si ca faisait une difference ca ne devrait pas expliquer la montagne entre le tableau de Wiki et mes resultats Quand on pose une question on est con 5 minutes, Quand on ne la pose pas on le reste toute sa vie...
|
|
lundi 28 avril 2008 à 17:46:49 |
Re : bench

BruNews
|
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.
ciao... BruNews, MVP VC++
|
|
lundi 28 avril 2008 à 17:47:49 |
Re : bench

BruNews
|
Autre chose, pour les cycles c'est RDTSC depuis l'user mode.
ciao... BruNews, MVP VC++
|
|
lundi 28 avril 2008 à 22:55:08 |
Re : bench

draluorg
|
Ok merci beaucoup pour ces precisions :)
Et surement a bientot sur asmfr.com!
Quand on pose une question on est con 5 minutes, Quand on ne la pose pas on le reste toute sa vie...
|
|
Cette discussion est classée dans : entiers, bits, c32, a32, b32
Répondre à ce message
Sujets en rapport avec ce message
Help me: grand nombres entiers [ par waza ]
voila je suis en train de réaliser un programme de cryptage rsa mais le pb c ke je suis limiter a des entiers de 64 bits!! (avec __int64) et je me dem
!!! Gestion d'entiers de 64 bits !!! [ par yoyo269 ]
Bonjour à toutes et à tous.Je souhaite pouvoir gérer les entiers de 64 bits sous Dev-C++ (et je compte y rester).Pour cela j'utilise la déclaration de
champ de bits [ par obasileus ]
Bonjour,je souhaiterai savoir comment faire pour déclarer un champs de bits et pouvoir ensuite accéder à la structure complète genre :typedef struct{
Temps restant avant la prochaine journée [ par HeavenForsaker ]
Bonjour,Je suis entrain de coder une fonction permettant de récuperer le temps restant avant la prochaine journée, pour se faire j'utilise la fonction
champ de bits - tableau [ par gregounnet ]
Bonjour,je souhaiterai savoir comment faire pour déclarer en C un champs de bits dans lequel je pourrais facilement me déplacer avec un flag, genre un
Types compatibles [ par goast_tu ]
Salut!vous savez s'il existe des types(entiers et flotants et entiers) qui sont compatibles entre windows et linux? si nn est il possible d'en créer u
Bis: Binaire en C [ par fredleconte ]
Réponse acceptée ! Mon problème n'est pas de convertir un nombre d'un base a l'autre mais de l'écrire comme en basic "%1010101" ou "%" désigne un nomb
stocker des entiers appartenant à +rs lignes (chaines de caractères séparées par des espaces) dans un tableau à deux dimensions [ par alphabh ]
Bonjour!je veux lire une ligne d'entiers depuis un fichier et stocker le contenu de ces lignes (une ligne contient des chaines de caractères séparées
structure de données [ par eagleye ]
je voulais savoir quelle structure de données à utilisé pour effectuer une intersection entre des entiers d'une manière efficace et rapide . sachant q
grands nombres [ par freeskieuse ]
Bonjour,je suis debutante en C++, j'ai un projet à faire, mais je ne sais pas du tout comment gèrer...SUJET:Pour la création d'entiers arbitrairement
Livres en rapport
|
Derniers Blogs
[WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|