Bonjour,

A propos des performances j ai une question qui me chagrine. Voici un exemple simple:
si dans une methode appelee frequemment j ai par exemple:
  • n traitements independants

  • chaque traitement sera effectue en fonction de son activation et celle ci est connue au depart

  • Chaque traitement prend les meme donnees en entree


Vaut - il mieux un code comme le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
void method(...)
{
  if(traitement_1_actif)
  {
    traitement_1(...);
  }
  .......
  if(traitement_n_actif)
  {
    traitement_n(...);
  }
}
mais j ai peur que tous ces test a effectuer ne ralentissent le code

ou alors l autre alternative que je vois est la suivante:
tous les traitements implementent une interface commune etant donne qu ils utilisent les memes entree
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
constructeur(....)
{
  // m_traitements est un vecteur de traitement membre de la classe
  if(traitement_1_actif)
  {
    m_traitements.push_back(traitement_1);
  }
  .......
  if(traitement_n_actif)
  {
    m_traitements.push_back(traitement_n);
  }
}
 
void method(....)
{
  // ApplyTraitement est un objet fonction permettant de faire passer les donnees aux traitements du vector
  for_each(m_traitements.begin(),m_traitements.end(),applyTraitement(...));
}
J ai tendance a trouver la deuxieme solution plus elegante mais ce que je cherche avant tout c est l efficacite en terme de temps d execution...
selon vous y en a t il une meilleure que l autre ? ou voyez vous un autre moyen plus efficace ?