En serio, a menos que tenga problemas de rendimiento debido a una llamada posterior al incremento en lugar del incremento previo LA DIFERENCIA DE RENDIMIENTO SÓLO IMPORTA EN CIRCUNSTANCIAS MUY RARAS.
actualización
Por ejemplo, si su software es una simulación del clima, y operator++
hace que la simulación para avanzar un paso (es decir ++simulation
le da el siguiente paso en la simulación, mientras que simulation++
realiza una copia del paso actual en la simulación, avanza la simulación y luego le entrega la copia), entonces el rendimiento será un problema.
De manera más realista, en un comentario, el interlocutor original menciona que estamos discutiendo un proyecto integrado con (aparentemente) requisitos de tiempo real. En ese caso, debe analizar su implementación específica.Dudo seriamente que tengas desaceleraciones notables iterando a través de un std::vector
con un incremento posterior en lugar de un incremento previo, aunque no he comparado ninguna implementación de STL en este asunto.
No elija uno sobre el otro por motivos de rendimiento. Elija uno sobre el otro por razones de claridad/mantenimiento. Personalmente, prefiero preincrementarme porque, en general, me importa un comino cuál era el valor antes de incrementar.
Si su cerebro explota cuando ve ++i
en lugar de i++
puede ser hora de considerar entrar en una línea de trabajo diferente.
Bastante cerca de un duplicado de http://stackoverflow.com/questions/24901/is-there-a-performance-difference-between-i-and-i-in-c. Esta pregunta sí especifica iteradores, mientras que la pregunta vinculada es más general. – Eclipse
Gracias ese enlace tiene una gran respuesta. – Matt