Quel est le meilleur (en performance) parmi ces extraits?Performance compare (appel de fonction normale vs for_each + mem_fun vs expression lambda) en C++
1)
for(list<Enemy*>::iterator iter = enemies.begin(); iter != enemies.end(); iter ++)
(*iter)->prepare(time_elapsed);
2)
for_each(enemies.begin(), enemies.end(), [time_elapsed] (Enemy *e) {e->prepare(time_elapsed);});
3)
for_each(enemies.begin(), enemies.end(), bind2nd(mem_fun1<void, Enemy, GLfloat>(&Enemy::prepare), time_elapsed));
Vous pouvez facilement mesurer vous-même dans le temps qu'il faut à quelqu'un pour mettre en place une réponse. – spender
Je pense que 2 a la meilleure chance. (1) a quelques inefficacités (appelant 'end' plusieurs fois et en utilisant post-incrément). – lijie
Enveloppez chaque instruction dans une étendue et placez un 'boost :: progress_timer' au début de la portée. Cela vous le dira. –