[C] Différence de performances entre xp et Linux énorme.

Voir le sujet précédent Voir le sujet suivant Aller en bas

[C] Différence de performances entre xp et Linux énorme.

Message  Bill le Lun 04 Oct 2010, 20:26

Bonsoir,

Voila, M Monbaliu nous avait demandé à la séance précédente de faire un petit test qui est de savoir quel est le plus grand entier non signé qui est premier et un palindrome, ce que j'ai fait.
Mais j'ai testé sur Ubuntu et Xp (sur wmware player) pour voir s'il y avait une différence entre les deux OS...mais je vais tout d'abords vous montrer mes codes :

estPalindrome
Code:

BOOL estPalindrome ( UINT val ){
   BOOL estPalindrome;
   unsigned long mir; 
   UINT nb;
   int nbch, x,i;
   i = 0;
   nb = val;
   mir = 0;
   nbch = nbDigits(val);
   if (nb %10 != 1){
      while (i< nbch){
         x = nb%10;
         nb /= 10;
         i++;
         mir = mir+x;
         mir*=10;
      }
   }else{
      while (i<= nbch){
         x = nb%10;
         nb /= 10;
         i++;
         mir = mir+x;
         mir*=10;
      }
   }
   mir /=10;
   if (val == mir){
      estPalindrome = VRAI;
   }else{
      estPalindrome = FAUX;
   }
   return estPalindrome;

}

estPremier
Code:

BOOL estPalindrome ( UINT val ){
   BOOL estPalindrome;
   unsigned long mir; 
   UINT nb;
   int nbch, x,i;
   i = 0;
   nb = val;
   mir = 0;
   nbch = nbDigits(val);
   if (nb %10 != 1){
      while (i< nbch){
         x = nb%10;
         nb /= 10;
         i++;
         mir = mir+x;
         mir*=10;
      }
   }else{
      while (i<= nbch){
         x = nb%10;
         nb /= 10;
         i++;
         mir = mir+x;
         mir*=10;
      }
   }
   mir /=10;
   if (val == mir){
      estPalindrome = VRAI;
   }else{
      estPalindrome = FAUX;
   }
   return estPalindrome;

}

estPremierPalindrome
Code:

void premPalin (){
   UINT max;
   BOOL trouve;
   double tac,tic = clock();
   max = 0xFFFFFFFF;
   trouve = FAUX;   
   while (max >0 && trouve == FAUX){
      if (estPalindrome(max)&& estPremier (max)){
         printf("le prem palin est : %u\n", max);
         trouve = VRAI;
         printf(" %u\n", max);
      }
      max = max - 2;
   }
   tac = clock()-tic;
   tac = tac/CLOCKS_PER_SEC;
   printf("temps : %f\n",tac);
}

Et donc, sur Ubuntu, ce code est fait en 22 secondes, sur xp sur vmware player, cela mets 342 secondes a être exécute (en mode release ou debug sur Eclipse, ou en mode console) , j'ai testé sur un pc du local 305...607 secondes.
Est-ce normal qu'il y a une si grande différence de temps d'exécution entre windows et Ubunutu? Si oui, pourquoi ? ^^
Bonne soirée.

Bill

Nombre de messages : 73
Age : 27
Prénom : Kevin
Statut : Ancien
Localisation : Brussels
Date d'inscription : 07/10/2009

Revenir en haut Aller en bas

Re: [C] Différence de performances entre xp et Linux énorme.

Message  mvh le Lun 04 Oct 2010, 20:31

... les résultats sont-ils les mêmes ?
Wink

_________________

La fête c'est nul sans Kidibul !
... (vieux proverbe local)



mvh

Nombre de messages : 5973
Age : 104
Prénom : Marcel VANHAELEN
Statut : (fin de bail)
Win 3.1 à reprendre
Localisation : Koekeliek de Baselberg
Date d'inscription : 06/12/2006

Revenir en haut Aller en bas

Re: [C] Différence de performances entre xp et Linux énorme.

Message  Bill le Lun 04 Oct 2010, 20:39

Oui, le résultat est bien le même, évidement ^^

Bill

Nombre de messages : 73
Age : 27
Prénom : Kevin
Statut : Ancien
Localisation : Brussels
Date d'inscription : 07/10/2009

Revenir en haut Aller en bas

Re: [C] Différence de performances entre xp et Linux énorme.

Message  Morbid le Lun 04 Oct 2010, 21:57

Faudrait tester sur deux même machines je suppose ...

parceque sous vmware et sous un pc du 305 silent

Morbid

Nombre de messages : 894
Age : 30
Prénom : Christophe
Statut : Ancien (R)
Date d'inscription : 23/11/2006

Revenir en haut Aller en bas

Re: [C] Différence de performances entre xp et Linux énorme.

Message  nvs le Lun 04 Oct 2010, 22:07

Morbid a écrit:Faudrait tester sur deux même machines je suppose ...

parceque sous vmware et sous un pc du 305 silent
et vérifier les options de compilation et d'optimisation de part et d'autre et exécuter depuis la console pour se débarrasser du biais induit par eclipse au lancement de l'application. et boucler plusieurs fois dans main pour évaluer l'effet du démarrage du programme.

sinon, je ne vois pas le code de estPremier. la fonction estPalindrome me semble bien compliquée. par exemple, je ne vois pas l'intérêt de la fonction nbDigits (dont le code n'est pas fourni). et, pour rendre le code davantage portable, j'utiliserais USHRT_MAX défini dans limits.h, pour l'unsigned maximal. dans ce cas, la comparaison de plateforme ne vaudrait que pour celles de même USHRT_MAX.









queen

_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

Re: [C] Différence de performances entre xp et Linux énorme.

Message  Contenu sponsorisé Aujourd'hui à 18:56


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum