Cita:  
					Iniciado por angeljgs  
  esto tarda unos 15 segundos en ejecutarse ( en el programa entero unos 2 minutos y medio), pero al quitar el trozo de codigo ultimo, tarda 1 segundo por que?
    Fíjate en que si quitas el fragmento que indicas, dejas de comprobar el valor de 
vale. Esta variable pasa a usarse únicamente para recibir asignaciones. 
La otra variable utilizada en el código es 
vj1 que casualmente le sucede lo mismo que a 
vale. 
Lo que sucede en este caso es que el compilador hace sus optimizaciones y se carga todo el bucle porque, sencillamente, no hace nada productivo. 
Prueba a compilar el programa en modo debug, sin optimizaciones, y verás como la diferencia entre una versión y otra es bastante más reducida. 
Un saludo