[C con Clase] GOTO

Jorge Medina jorge en bsdchile.cl
Jue Nov 13 02:32:43 CET 2008


2008/11/12 Programante <programante en gmail.com>:
> Jorge Medina escribió:
>>
>> A menudo se cometen muchos errores al usar goto y es costoso depurarlos
>> mas que eso goto es la instruccion mas costosa para la CPU
>
> ¿¿Perdón?? De acuerdo en que aumenta el coste de depurar un programa que
> salta completamente de
> un sitio a otro

simple si sales de una ejecucion X y tu programa sigue en ejecucion
probablemente te quede memoria sucioa y sin liberar.

(aunque en determinado casos un goto pueda ser más legible
> que hacer falsas las


K&R dicen goto solo para manipular errores y en C++ deberias usar try & cash

> condiciones de muchos bucles) pero el coste de hacer un salto es el mismo
> usando goto que for o while.

incisto el goto sera valido solo para saltar a un sector que termine
la ejecucion del programa e informe

> Cuando hay que saltar, se hace igual, con la instrucción JMP. Sí, es una
> instrucción costosa, porque no
> el prefetching que hizo la CPU no es válido, pero un programa que contenga
> gotos no va a ser más lento

teoria de microprocesadores deja claro que para la CPU es costoso
obtener ese punto exacto donde saltar
por que el procesador no tiene registros especiales para guardar esos
labels donde posiblemente pueda saltar
por lo tanto al parar la ejecucion tiene que hacer un marabar para
buscar donde saltar y luego retomar la ejecucion.

> que otro que haga lo mismo de otra manera. Incluso puede ser ligeramente más
> rápida la ejecución...
> (a costa de otros aspectos).
>

para salir de un bucle solo necesitas  break y saber programar
yo lo entiendo asi y evitare siempre el goto, salvo para manipular
algun error en rutinas de muy bajo nivel
mas que flame, doy una humilde opinion basada en mi experiencia, por
si a alguien le sirve.
-- 
Jorge Andrés Medina Oliva.
Evolve or die!




Más información sobre la lista de distribución Cconclase