Primero, no te preocupes por las cosas pequeñas. Detalles como la cuenta regresiva versus la cuenta regresiva son por lo general completamente irrelevantes en el tiempo de ejecución. Los humanos son notoriamente malos al detectar áreas en el código que necesitan ser aceleradas. Use un perfilador. Preste poca o ninguna atención a cualquier parte del ciclo que no se repita, a menos que el generador de perfiles diga lo contrario. Recuerde que lo que está escrito en un bucle interno no se ejecuta necesariamente en un bucle interno, ya que los compiladores modernos son bastante listos para evitar la repetición innecesaria.
Dicho esto, tenga mucho cuidado con los bucles de desenrollado en las CPU modernas. Cuanto más ajustados sean, mejor encajarán en la memoria caché. En una aplicación de alto rendimiento en la que trabajé el año pasado, mejoré significativamente el rendimiento mediante el uso de bucles en lugar de código de línea recta y apretándolos tanto como pude. (Sí, hice un perfil, la función en cuestión tomó el 80% del tiempo de ejecución.También comparé los tiempos con la entrada típica, así que sabía que los cambios me ayudaron.)
Además, no hay nada de malo en desarrollar hábitos que favorezcan un código eficiente. En C++, debe adquirir el hábito de usar el preincremento (++ i) en lugar del incremento posterior (i ++) para incrementar las variables de bucle. Por lo general, no importa, pero puede marcar una diferencia significativa, no hace que el código sea menos legible o escribible, y no hará daño.
ver respuesta de @monoxide. esto no debe etiquetarse como independiente del idioma y creo que obtendrás mejores respuestas si las personas saben qué idioma/compilador están tratando de optimizar. –
de acuerdo, la optimización es específica del idioma, y la forma en que se expresa la pregunta parece que también se debe apuntar a una plataforma en particular (los tiempos operativos varían para las diferentes CPU) – Oskar
etiquetado needs-clarification – Sklivvz