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 :
mais j ai peur que tous ces test a effectuer ne ralentissent le codeCode:
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(...); } }
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
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...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(...)); }
selon vous y en a t il une meilleure que l autre ? ou voyez vous un autre moyen plus efficace ?