begin process at 2010 02 10 01:18:45
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Delphi et asm

 > UN PTIT CODE POUR PIKÉR LA VITESSE DES CPU INTEL RÈCENTS

UN PTIT CODE POUR PIKÉR LA VITESSE DES CPU INTEL RÈCENTS


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Delphi et asm Niveau :Débutant Date de création :10/06/2002 Date de mise à jour :11/06/2002 00:51:44 Vu :6 197

Auteur : ManChesTer

Ecrire un message privé
Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

 Description

pour l'utiliser :

Label1.caption:='Vitesse du cpu : 'Inttostr(get_cpu_speed)+'Mz';

Source

  • function get_cpu_speed:dword;
  • {
  • voila un chtite functon pour prendre la vitesse
  • du cpu qui marche avec un pentium au minimum
  • bon coding a vous ...
  • ManChesTer (c)2002 freeware
  • }
  • var Speed : dword;
  • begin
  • SetpriorityClass(getcurrentprocess,REALTIME_PRIORITY_CLASS);
  • SetThreadPriority(getcurrentThread,THREAD_PRIORITY_TIME_CRITICAL);
  • asm
  • push eax
  • push edx
  • push ecx
  • push 1000
  • call sleep // appel de sleep(1000)
  • dw $310F // rdtsc (red internal cpu timer in cycle)
  • add eax,edx
  • mov speed,eax // stokez les cycles machine
  • push edx
  • xor eax,eax
  • push 1000
  • call sleep // appel de sleep(1000)
  • pop edx
  • dw $310F // relire le timer cpu rdsc
  • add eax,edx
  • sub eax,speed // garder 1000 millisecondes (1 seconde)
  • mov speed,eax // le stocké dans speed;
  • pop ecx
  • pop edx
  • pop eax
  • end;
  • result:=round((speed / 1000000) / 3)*3; // div 3 * 3 a cose de busfeq
  • end;
function get_cpu_speed:dword;
{
 voila un chtite functon pour prendre la vitesse
 du cpu qui marche avec un pentium au minimum

 bon coding a vous ...

 ManChesTer (c)2002 freeware
}
var Speed : dword;
begin
 SetpriorityClass(getcurrentprocess,REALTIME_PRIORITY_CLASS);
 SetThreadPriority(getcurrentThread,THREAD_PRIORITY_TIME_CRITICAL);
 asm
   push eax
   push edx
   push ecx
   push 1000
   call sleep      // appel de sleep(1000)
   dw   $310F      // rdtsc (red internal cpu timer in cycle)
   add  eax,edx
   mov  speed,eax  // stokez les cycles machine
   push edx
   xor  eax,eax
   push 1000
   call sleep      // appel de sleep(1000)
   pop  edx
   dw   $310F      // relire le timer cpu rdsc
   add  eax,edx
   sub  eax,speed  // garder 1000 millisecondes (1 seconde)
   mov  speed,eax  // le stocké dans speed;
   pop ecx
   pop edx
   pop  eax
 end;
 result:=round((speed / 1000000) / 3)*3; // div 3 * 3 a cose de busfeq
end; 

 Conclusion

Meci fabiin, j'ai updater le code en fait le 1er result etais utile dans ma cpulib mais inutile ici, j'avais oublier de l'enlever. Maintenant c'est fait.


 Sources de la même categorie

Source avec Zip APPELER UNE API EN ASM AVEC DELPHI par DeadlyPredator
RENVOIT UNE CHAINE DE X FOIS LE CARACTÈRE DEMANDÉ par cutmaster
PETIT ÉQUIVALENT DU ?: DU C EN DELPHI POUR LES CHAINES, LONG... par cutmaster
AVOIR LE NOM DU JOUR DE LA SEMAINE DÉSIGNÉ par cutmaster
REMPLISSAGE FORMATÉ D'UN SHORTSTRING par cutmaster

Commentaires et avis

Commentaire de bgK le 10/06/2002 18:47:15

C'est pas du vrai ASM, c'est pour ajouter dans un prog delphi !!! :)

Commentaire de fabiin le 10/06/2002 19:09:11

ca plante a
result:=cpu_speed;
:)

Commentaire de fabiin le 10/06/2002 19:10:13

d'où la catégorie Delphi et ASM bgK

Commentaire de JLN le 10/06/2002 19:51:16

Soyez sympa les gars, c'est le premier script et vous critiquez déjà. Attendez de voir la suite avant, non ??? Ceci dit il y a quand même un bout d'assembleur dans ce script, osez dire le contraire !

Commentaire de Delphiprog le 10/06/2002 21:07:47 administrateur CS

Il est le premier, il a osé ! Ca mérite des encouragements, tout de même.
Félicitations, JLN.
Si c'est pas du vrai ASM ? Alors, que faut-il de plus ?  ou de moins ?
Continues, mon gars...tu nous intéresses. [;-)]

Commentaire de BlackWizzard le 11/06/2002 00:09:55 administrateur CS

cool!
:p

Commentaire de fabiin le 11/06/2002 10:46:31

t'1 cool !!!
ca marche bien en plus :-D

Commentaire de cam91 le 12/06/2002 00:10:25

pas mal ton code, je ne connaissais pas le 'call sleep'.
Mais il y à une erreur, dw $310f stock la fréquence sur 64 bits dans edx:eax
(et non pas dans edx+eax). De plus il y a beaucoup de code inutile.
Je ne corrige pas l'erreur, mais je te propose un code plus simple
pour la même fonction qui est exact pour une fréquence <=4 Ghz.
Attention à diviser le résultat par 500000.


function Tform1.get_cpu_speed:dword;
asm
  push 1  ;call sleep;dw $310F;mov ecx,eax;
  push 500;call sleep;dw $310F;sub eax,ecx
end;

Commentaire de ManChesTer le 12/06/2002 03:31:27 administrateur CS

C'est en effet une autre mèthode cam91.
Mais avec ton code, j'ai un plantage liè au fait que tu oublie de sauver les registres, qui bien sur sont modifiès par le call sleep.
Le rèsultat de ta routine est moins prècis (je ne comprend dailleur pas pq).

enfin ton code est un peux "camicase" mais peux convenir dans certains cas.

Commentaire de Scaq le 07/10/2002 16:56:13

Il y a il me semble une erreur de pile...
ou sleep commence par pop
ton code asm est en 32bits,il est plus rapide de passer les parametre par les registres
Je me trompe peut être!:)

Commentaire de soumpro le 29/03/2004 17:39:45

Bon , rien de particulier !
Il faut quand meme pousser un peu plus loin et ce n'est pas à 100% asm !
Enfin !

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,187 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales