Hola a todos.
Bueno esa es mi intriga, estoy haciendo un programa para practicar y note que tiene más de 10 bucles y sin pensar demasiado los hice todos con while, quisiera saber si esto de utilizar uno u otro pude afectar la memoria como a la velocidad del programa. -
Saludos.
para nada, una vez compilador while y for terminan siendo indiferentes
- Con while() puede que no necesites una variable de lazo auxiliar (i,j, etc)
- A nivel de codigo maquina podria haber diferencias minimas pero tampoco de muchas instrucciones (mas bien algun reorden)
- Velocidad: no debe haber diferencia significativa excepto que:
a) A nivel de maquina haya alguna instruccion de mas (en while vs for) +
b) Hagas millones de iteraciones +
c) El codigo a ser iterado es muy simple y entonces en comparacion (a) podria hacerse mas signifcativo.
Cita de: HardForo en 19 Mayo 2016, 19:29 PM
- Con while() puede que no necesites una variable de lazo auxiliar (i,j, etc)
con for tampoco
incluso perfectamente puedes hacer
while(i != false){
//algo
}
//o
for(;i != false;){
//algo
}
ambos ciclos son identicos en funcionamiento
Cita de: HardForo en 19 Mayo 2016, 19:29 PM
- A nivel de codigo maquina podria haber diferencias minimas pero tampoco de muchas instrucciones (mas bien algun reorden)
con lo eficiente de la compilación actual los códigos podrían ser identicos (la compilación actual es "inteligente" y compila en el orden más optimo, no en relación plana a las instrucciones)
Cita de: HardForo en 19 Mayo 2016, 19:29 PM
- Velocidad: no debe haber diferencia significativa porque aporta poco en instrucciones (a nivel maquina) respecto de lo que se supone haces en el bucle (excepto sea tambien muy simple y tengas que hacerlo millones de veces)
a) A nivel de maquina alguna instruccion de mas (en while vs for) +
b) Hagas millones de iteraciones +
c) El codigo a ser iterado es muy simple y entonces en comparacion (a) podria hacerse mas signifcativo.
lo mismo que arriba... probablemente nada de esto termine haciendo diferencias
Hay casos donde es irreducible la necesidad de variable de lazo sin embargo @alex @"engel lex" creo tienes razon pero habria que desensamblar para estar seguros y de todas formas existen muchos compiladores como para asegurar.
Creí que Lex venia por Alex por Alexander y a su vez por Alejandro :xD
Hola.
Gracias a ambos por ocuparse, como lamentablemente todavía desconozco cómo desensamblar
un programa me quedo con que es indiferente utilizar uno u otro. -
Saludos.
Si te lo piensas bien, hay una diferencia fundamental entre ambos, que "supongo" puedes ver a simple vista.
Donde se hace la comprobación de la condición del bucle, antes o después de ejecutar el bloque
Cita de: Orubatosu en 20 Mayo 2016, 09:38 AM
Si te lo piensas bien, hay una diferencia fundamental entre ambos, que "supongo" puedes ver a simple vista.
Donde se hace la comprobación de la condición del bucle, antes o después de ejecutar el bloque
no, no está do while, :P así que si son identicos, ambos comprueban en la entrada
Hola.
Ufff, lo de Orubatosu me había desconcertado, si la condición es falsa el bucle no se ejecuta nunca tanto en for como en while por qué la misma se verifica al comienzo, en cambio, con do while aunque sea falsa la primera vez se lee lo que está dentro del bloque porqué la condición se encuentra al final, espero estar en lo cierto.-
Saludos.
Cita de: NOB2014 en 20 Mayo 2016, 15:39 PM
Hola.
Ufff, lo de Orubatosu me había desconcertado, si la condición es falsa el bucle no se ejecuta nunca tanto en for como en while por qué la misma se verifica al comienzo, en cambio, con do while aunque sea falsa la primera vez se lee lo que está dentro del bloque porqué la condición se encuentra al final, espero estar en lo cierto.-
Saludos.
Esa es la idea del do-while ;)