¿Qué es más eficiente, i++ o ++i?

¿Qué es más eficiente, i++ o ++i?

yo++:

  • crear una copia temporal de i
  • incrementar i
  • devolver la copia temporal

++i :

  • incrementar i
  • volver yo

Con las optimizaciones activadas, es muy posible que el ensamblaje resultante sea idéntico; sin embargo, ++i es más eficiente.

editar:tenga en cuenta que en C ++, puedo ser cualquier objeto que admita el operador prefijo y postfijo ++. Para objetos complejos, el costo de la copia temporal no es despreciable.


Buscaría en otra parte el potencial de optimización.


La eficiencia no debería ser su preocupación:es significado . Los dos son no lo mismo, a menos que sean independientes:uno opera antes del uso del valor, el otro post.

int i;i =1;cout <

int i;i =1;cout <<++i; //Devuelve 2

Cuando el significado no es importante, la mayoría de los compiladores traducirán tanto ++i como i++ (por ejemplo, en un bucle for) al mismo código de máquina/VM.