Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Comment Calculer le ratio de performance «selon tutorial de cari » [ Algorithme / Autre ] (khawarizm)

vendredi 2 novembre 2007 à 14:42:29 | Comment Calculer le ratio de performance «selon tutorial de cari »

khawarizm

Membre Club

Bonjour tout le monde ; après la lecture du tutorial « TACTIQUES D'OPTIMISATION DE LA VITESSE D'EXECUTION DU CODE «  de caribensila j'ai constater qu'il effectues des testes sur différentes méthodes et fonctions et il donne l'avantage à l'une ou l'autre selon  un ratio de performance, ben  je  cherche bêtement à savoir comment on calcule ces ratios Est-ce que on utilise : un chrono , existe-il un composant ou utilitaire pour ça . !

Alors, je demande @caribensila de nous parler de la méthode . Et si d'autres développeurs ont une autre  méthode ou technique, qu'ils nous éclairent merci pour tous.

Remarque  : j'ai poser cette question ici pour que tout le monde profite de la réponse .    


vendredi 2 novembre 2007 à 15:09:03 | Re : Comment Calculer le ratio de performance «selon tutorial de cari »

f0xi

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !

pour avoir une idée globale des perf, GetTickCount suffit amplement :


var GTADD, GTDIV : cardinal;

procedure .... ;
begin
  GTADD := GetTickCount;
  For N := 1 to 10000000 do X := 22 + 8;
  GTADD := GetTickCount - GTADD;

  GTDIV := GetTickCount;
  For N := 1 to 10000000 do X := 22 / 8;
  GTDIV := GetTickCount - GTDIV;

  caption := format('Add=%d ms / Div=%d ms',[GTADD, GTDIV]);
end;



deefsign.gif

vendredi 2 novembre 2007 à 15:21:35 | Re : Comment Calculer le ratio de performance «selon tutorial de cari »

Caribensila

Membre Club
Réponse acceptée !
Salut,

@Khawarizm
Remarque le " f
or N := 1 to 10000000 " de f0xi...
C'est parce que souvent, on est obligé de faire de très nombreuses itérations pour pouvoir obtenir une valeur de temps "mesurable".

vendredi 2 novembre 2007 à 15:51:54 | Re : Comment Calculer le ratio de performance «selon tutorial de cari »

khawarizm

Membre Club

Salut F0xi , salut Cari ; je vous remercie pour vos réponses , effectivement j'ai 20 ms pour Add et 30 ms pour Div  . @cari : oui j'ai remarquer le nombre élevé d'itération ; maintenant j'ai bien chercher « GetTickCount » sur l'aide de DELPI mais je trouve rien !!!


vendredi 2 novembre 2007 à 16:00:13 | Re : Comment Calculer le ratio de performance «selon tutorial de cari »

Caribensila

Membre Club
Réponse acceptée !
C'est une fonction Windows qui renvoie le nombre de millisecondes écoulé depuis le lancement du système.

Ici pour plus de précisions sur cette fonction.

@+

vendredi 2 novembre 2007 à 16:24:36 | Re : Comment Calculer le ratio de performance «selon tutorial de cari »

khawarizm

Membre Club

Merci les gars et merci pour le lien  , ça va m'aider à améliorer mes codes surtout que je m'initier au GLCene et ce dernier bouffe trot de temps et de CPU.


vendredi 2 novembre 2007 à 20:22:09 | Re : Comment Calculer le ratio de performance «selon tutorial de cari »

f0xi

Membre Club Administrateur CodeS-SourceS
Réponse acceptée !

GetTickCount et GetPerformanceMonitor apparaissent dans l'aide du SDK windows, qui doit etre installé quand l'install delphi le demande :)

note aussi que dans :

  GTADD := GetTickCount;
  For N := 1 to 10000000 do X := 22 + 8;
  GTADD := GetTickCount - GTADD;

on mesure egalement le temps que prend la boucle FOR.

si on fait :

  GTADD := GetTickCount;
  For N := 1 to 10000000 do X := 22 + 8;
  GTADD := GetTickCount - GTADD;

et

  GTADDTotal := 0;
  for N := 1 to 10000000 do
  begin
   
GTADD := GetTickCount;
    X := 22 + 8;
    GTADDTotal := GTADDTotal + GetTickCount - GTADD;
  end;

tu remarquera une trés grosse difference! (GTADDTotal = 0)
car le temps que prend  l'instruction ADD est  inferieur au millieme de secondes (~0.0000000001 secondes sur un cpu a 1Ghz).

il faudrat donc faire :

  GTADDTotal := 0;
  for N := 1 to 10000000 do
  begin
    GTADD := GetTickCount;
      X := 22 + 8;   X := 44 + X;
      X := 22 + 8;   X := 44 + X;
      X := 22 + 8;   X := 44 + X;
      X := 22 + 8;   X := 44 + X;
      X := 22 + 8;   X := 44 + X;
    GTADD := GetTickCount - GTADD;
    GTADDTotal := GTADDTotal + GTADD;
  end;
  GTADDTotal := GTADDTotal * 10;


deefsign.gif

vendredi 2 novembre 2007 à 22:23:40 | Re : Comment Calculer le ratio de performance «selon tutorial de cari »

khawarizm

Membre Club

Bonsoir tout le monde ,bonsoir F0xi ; merci beaucoup pour tes explications , j'ai bien tester tes nouveaux codes mais  il y à quelque chose que je n'arrive pas a comprendre :

Avec le deuxième code :

 

GTADDTotal := 0;
  for N := 1 to 10000000 do
  begin
    GTADD := GetTickCount;
    X := 22 + 8;
    GTADDTotal := GTADDTotal + GetTickCount - GTADD;
  end;

 

« tu remarquera une trés grosse difference! (GTADDTotal = 0) »

 

Effectivement,  j'ai constater un changement mais GTADDTotal n'affiche pas  0 chez moi il affiche entre 60 et 90 ms !!! sur un CPU a 1Ghz d euxième remarque : si je répète la fonction ou la procédure j'ai chaque foie une valeur différente (entre 60 et 90 ms) je veux savoir à quoi est du ce changement .Merci


samedi 3 novembre 2007 à 13:09:31 | Re : Comment Calculer le ratio de performance «selon tutorial de cari »

florenth

Membre Club
Salut !

Hola f0xi, je croyais que GetTickCount était aussi précis qu'un lancer de vache sur un TGV roulant à 350km/h !!!!!

Sérieusement, tu oublies pas mal de détails dans ton calcul de performances, même si j'obtiens les mêmes résultats que toi (mais pour un processeur de 1.8Ghz avec HT):
  1. Le fait que tu dois donner des valeurs aléatoires à calculer (sinon c'est le compilo qui calcule ! et tu mesures alors le temps d'une copie de mémoire)
  2. Mieux vaut mesurer toute la boucle, puis diviser par le nombre de fois qu'on a bouclé.
  3. Se méfier de la précision de m**** des flottants (utiliser l'api de Cari pour le calcul)
  4. Du coup, en faisait ça, tu rajoutes la nécessité de calculer un temps "à vide".
Je posterai un code (si j'en ai le temps) pour montrer ce qu'on obtient véritablement.

++
Flo

PS: du coup, c'est moi qui re-deviens fou d'optimisation ^^

Ressources Delphi, sources, tutoriaux, actu, ...: www.mx-dev.net [ Lien ]

samedi 3 novembre 2007 à 15:53:41 | Re : Comment Calculer le ratio de performance «selon tutorial de cari »

WhiteHippo

Membre Club
Réponse acceptée !

Bonjour,

il serait bon pour mesurer les temps de penser à changer la priorité du thread de l'application :

var
  MainThread  : THandle;
  OldPriority : Integer ;
begin
  // Recupération de l'ID du thread principal, celui de l'appli
  MainThread := GetCurrentThread;
  // Sauvegarde de la priorité en cours
  OldPriority := GetThreadPriority( MainThread ) ;
  // Priorité la plus haute possible pour l'application.
  // Attention au boucles trop grandes, car le reste va être gelé brrrr ;P
  SetThreadPriority(MainThread, THREAD_PRIORITY_TIME_CRITICAL);
  try
    // Calculs ici
  finally
    // Restauration de l'ancienne priorité
    SetThreadPriority(MainThread, OldPriority);
  end ;
end;

Cordialement.


"L'imagination est plus importante que le savoir." Albert Einstein



1 2 3

Cette discussion est classé dans : tutorial, calculer, performance, ratio, cari


Répondre à ce message

Sujets en rapport avec ce message

Je recherche un Tutorial pour faire un pti prog [ par InTh3WinD ] Je cherche un pti tutorial pour faire un pti lecteur mp3 en delphi ( g delphi4 ) Tutorial [ par ZeRoXCoOL ] salut je cherche un tutorial delphi complet svp calculer le temps [ par bouiboui ] Je cherche un moyen de calculer le temps d'exécution d'une procedure en delphi, existe-t-il une fonction permettant de le faire ?(Un Timer est dispo d Calculer le crc d'un fichier [ par zorg63 ] Salut!Je voudrais savoir comment calculer le crc d'un fichier pour le comparer à une base de donnees. Comment ce calcul s'effectue-t-il?Merci d'avance RECHERCHE UN TUTORIAL POUR CREER UN LOG MESSAGERIE [ par BXDS ] Bonjour et bonne annéeJe désire trouver un ou des tutorials permettant de montrer la procédure pour créer un logiciel de messagerie comme par exemple Recherche tutorial installshield [ par Wriggles ] Bonjour,je suis désespérement à la recherche d'un tutorial sur l'utilisation de l'installshield livré avec delphi 6Merci d'avance. tutorial [ par rintchu ] salut,ou pourrais je trouver un bon tutorial en francais ?MerciThe JEDI of the Death Calculer la bande passante [ par Kane ] Comment peux t'on mesurer la bande passante de sa connection internet ?Merci bicoup ! Calculer la bande passante [ par Kane ] Savez comment je peux calculer la bande passante de mon PC ?Pouvez vous m'aider ?Merci Comment calculer le nombre de mois séparant deux dates ? [ par Nefret ] Bonjour, j'aimerai savoir s'il existe un moyen de calculer le nombre de mois qui sépa


Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,374 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.