Ver Mensaje Individual
  #8 (permalink)  
Antiguo 25/01/2015, 13:46
Avatar de Aleinshir
Aleinshir
 
Fecha de Ingreso: diciembre-2014
Mensajes: 14
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: recorrido caballo

Cita:
Iniciado por HackmanC Ver Mensaje
Hola,

Pues bueno, en mi opinión personal, si tu dices que no se produce un ciclo infinito en el ciclo for que marqué en rojo, por que la variable i nunca cambia de valor, y la condición dice que se repita mientras i == 0, como puedo contradecirte.



Lo cual solo me indica que no estás seguro si escribe en o no fuera del arreglo.


Te expreso solamente mi opinión personal, aunque todavía sigo con la duda del cual es tu pregunta realmente.

¿Quieres optimizarlo? Ya te indique el el try/catch está consumiendo aproximadamente 50% del tiempo, si lo quitas posiblemente el código va a ser mas rápido. Una vez estés seguro de que no suceden excepciones en ese código puedes pasar a optimizar otras cosas.

¿Quieres saber si C es mas rápido que Java? Positivamente, en la mayoría de los casos C va a ser mas rápido que Java porque no es lo mismo, ni hacen lo mismo. En tu código en lenguaje C no hay validación si se salió fuera del rango permitido en la matriz, en Java si verifica eso, el índice fuera del rango.

Pero no creas que Java va a ser demasiado lento en comparación con C, simplemente tu código no es el mejor ejemplo para esta comparación, ni lo mas mínimo, donde evidentemente tuviste que subirle el tamaño a la matriz en C porque no estabas seguro si los índices se salían del rango o no, mientras que en Java te muestra claramente que sí se sale (si le pones un print en el catch).

En lo personal, me encanta el lenguaje C pero nunca voy a compararlo con Java, con el lenguaje C estás manipulando el procesador y la memoria casi directamente, mientras que Java hace mucho mas que simplemente eso.

Esa es simplemente mi opinión al respecto,

Saludos,
Waa lo siento, mi error xd. Si tienes razon es un ciclo infinito, lo que sucede es que pense que te referias al trozo de codigo que ejecutaba el caballo y como si la consola se quedara "pensando" sin mostrar nada, fue mi error xd no lei bien tu respuesta.

Con respecto a la pregunta efectivamente mi duda es esa perdida de velocidad que tiene java (gracias por resolver mi duda con respecto a el try/catch) asi que es por culpa de eso que se ejecuta mas lento... pero yo aplique otro metodo e igual tardaba en mostrar el resultado, este es el que aplique:
en vez de excepciones use:
Código Java:
Ver original
  1. if (posicionH + horizontal[siguiente_mov] > 0 && posicionV + vertical[siguiente_mov] < 8 && posicionV + vertical[siguiente_mov] > 0 && posicionH + horizontal[siguiente_mov] < 8)
  2. {
  3. if (Tablero[posicionH + horizontal[siguiente_mov]][posicionV + vertical[siguiente_mov]] == 0)
  4.                     {
  5.                         Tablero[posicionH][posicionV] = movimientos;
  6.                        
  7.                         errores = 0;
  8.                         aux_mov = false;
  9.                         posicionV += vertical[siguiente_mov] ;
  10.                         posicionH += horizontal[siguiente_mov] ;
  11.                     }
  12. }
asi evitando de antemano un posible error e igual tarda bastante...

PD: Si es un ciclo infinito, pero es porque cuando le das enter o cualquier tecla el te muestra otra forma de resolverlo (era la intencion). Si muestra resultado demostrando que funciona, ahora que el programa nunca termina hasta cerrarlo con la x es cierto.

Última edición por Aleinshir; 25/01/2015 a las 13:56