Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2362 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  optimisation du code c++

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

optimisation du code c++

n°2013432
ilelle
Posté le 01-08-2010 à 16:05:28  profilanswer
 

Bonjour à tous,
J'ai un problème d'optimisation au niveau de mon programme c++ :
voici une partie de mon programme ou je pense que le problème se situe :
 
Dans la fonction “Loader::minOfMin_maxOfMax”  si je remplace le code  
 
       mmin = min(min(c1,c2), min(c3,c4));  
 mmax = max(max(c1,c2), max(c3,c4));

 
par :
 
mmin  = 0;  float m =  min(min(c1,c2), min(c3,c4));
mmax = 0 ;  float n = max(max(c1,c2),min(c3,c4))) ;

 
Le programme devient rapide, sinon mon programme est vraiment long.
 
 
inline void Loader::minOfMin_maxOfMax(int idVertex, float theta, float phi, int
numFace, float &mmin, float &mmax)
{
 float c1, c2, c3, c4;
 c1 = rho(idVertex, theta,   phi,  numFace);
 c2 = rho(idVertex, theta,   phi+degPhi, numFace);
 c3 = rho(idVertex, theta+degTheta, phi+degPhi, numFace);
 c4 = rho(idVertex, theta+degTheta, phi,   numFace);
 
 mmin = min(min(c1,c2), min(c3,c4));  
 mmax = max(max(c1,c2), max(c3,c4));
}
 
 
void Loader::remplirContributionPenalite()
{
 
 for(int F=0; F<nbrfaces; F++)
 {
  for(int i=0; i<(maxTheta-minTheta)/pasTheta; i++)
  {
   float theta = (minTheta + i*pasTheta) * PI_180;
   for(int j=0; j<(maxPhi-minPhi)/pasPhi; j++)
   {
    float phi = (minPhi+j*pasPhi)*PI_180;
     
    // min des min et max des max pour le vertices I
 
    float minRho1, maxRho1, minRho2, maxRho2, minRho3, maxRho3;
    minOfMin_maxOfMax(1, theta, phi, F, minRho1, maxRho1);
    minOfMin_maxOfMax(2, theta, phi, F, minRho2, maxRho2);
    minOfMin_maxOfMax(3, theta, phi, F, minRho3, maxRho3);
 
                         }
                 }
         }
}
 
Je n'arrive pas à localiser le problème.
Merci d'avance

mood
Publicité
Posté le 01-08-2010 à 16:05:28  profilanswer
 

n°2013437
ilelle
Posté le 01-08-2010 à 18:28:53  profilanswer
 


Pas de réponse........... SVP j'ai vraiment besoin de la solution

n°2013438
GrosBocdel
Posté le 01-08-2010 à 18:36:00  profilanswer
 

ilelle a écrit :

Bonjour à tous,
J'ai un problème d'optimisation au niveau de mon programme c++ :
voici une partie de mon programme ou je pense que le problème se situe :
 
Dans la fonction “Loader::minOfMin_maxOfMax”  si je remplace le code  
 
       mmin = min(min(c1,c2), min(c3,c4));  
 mmax = max(max(c1,c2), max(c3,c4));

 
par :
 
mmin  = 0;  float m =  min(min(c1,c2), min(c3,c4));
mmax = 0 ;  float n = max(max(c1,c2),min(c3,c4))) ;

 
Le programme devient rapide, sinon mon programme est vraiment long.
 


 
Donc en sortie de minOfMin_maxOfMax tu as mmin =0 et mmax =0  
Et donc quelque part ailleurs je suppose que tu boucles entre mmin et mmax?
 

n°2013439
Joel F
Real men use unique_ptr
Posté le 01-08-2010 à 18:51:16  profilanswer
 

gprof c'est pas pour les lévriers ousbeques
ce code n'a aucune réison de ralentir quoi que ce soit ...

n°2013443
ilelle
Posté le 01-08-2010 à 19:08:56  profilanswer
 

Moi ce que je veux exécuter c'est le bloc en rouge mais ce que je n'arrive pas à comprendre le temps fou qui prend pour s'exécute (se qui guère m'arrange) , alors qu'on remplaçant se bout de code avec le meme nombre d'opération le temps d'exécution devient trop rapide
 
est ce que quelqu'un peut m'aider ?  

n°2013444
GrosBocdel
Posté le 01-08-2010 à 19:15:56  profilanswer
 

GrosBocdel a écrit :


 
Donc en sortie de minOfMin_maxOfMax tu as mmin =0 et mmax =0  
Et donc quelque part ailleurs je suppose que tu boucles entre mmin et mmax?
 


n°2013446
ilelle
Posté le 01-08-2010 à 20:10:12  profilanswer
 

@ GrosBoc : oui exact mais j'ai mis la boucle en commentaire donc ça ne vient pas de la boucle

Message cité 1 fois
Message édité par ilelle le 01-08-2010 à 20:11:38
n°2013448
GrosBocdel
Posté le 01-08-2010 à 20:21:09  profilanswer
 

ilelle a écrit :

@ GrosBoc : oui exact mais j'ai mis la boucle en commentaire donc ça ne vient pas de la boucle


 
Ha. Bon.
Le compileur te dit peut-être que m et n ne sont pas utilisés et supprime simplement le code?
 
Goto solution de Joel.

n°2013463
ilelle
Posté le 01-08-2010 à 23:56:17  profilanswer
 

Merci de votre participation à mon problème en fin j'ai trouvé la solution, le problème se trouvait au niveau des variable d'entrée sortie, il fallait juste faire un retourne par @ pour accélérer le code :
 
float * Loader::minOfMin_maxOfMax(int idVertex, float theta, float phi, int numFace)
{
 float c1, c2, c3, c4,c12min,c12max,c34min,c34max,min14,max14;
 float minmax[2];
 c1 = rho(idVertex, theta,   phi,  numFace);
 c2 = rho(idVertex, theta,   phi+degPhi, numFace);
 c3 = rho(idVertex, theta+degTheta, phi+degPhi, numFace);
 c4 = rho(idVertex, theta+degTheta, phi,   numFace);
 
 minmax[0]=minimum(minimum(c1,c2), minimum(c3,c4));
 minmax[1]=maximum(maximum(c1,c2), maximum(c3,c4));
 
 return minmax;
}
 
j'espère que cela aidera d'autre personne

n°2013473
Un Program​meur
Posté le 02-08-2010 à 08:41:17  profilanswer
 

Retourner un pointeur vers une variable locale n'est pas la chose a faire.


---------------
The truth is rarely pure and never simple (Oscar Wilde)

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  optimisation du code c++

 

Sujets relatifs
Optimisation de code javascriptCode simple, optimisation possible?
Optimisation d'un code VBA pour excelOptimisation de code
Optimisation de la syntaxe d'un code (pour gain en rapidité)optimisation du code, tester valeur avant attribution ?
[Turbo Pascal 7] Optimisation trunc() et écriture dans le codeOptimisation de code et délai d'exécution
Optimisation du codeoptimisation du code
Plus de sujets relatifs à : optimisation du code c++


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR