Code conditionnel : if else ou for_each ?
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:
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:
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 ?