Archivos de Febrero de 2008

Es importante optimizar

14 Febrero de 2008

Eso es lo que me he tenido que decir ya un par de veces en el último mes en el trabajo. Resulta que he estado encargado del editor visual de código del proyecto (del que ya hablé antes) y la verdad es que me ha servido para aprender bastante de optimización. El control de edición ha sido creado desde un control de .Net básico (UserControl), y ha sido creado para soportar sintaxis coloreada e intellisense (esa ventanita tan molona que nos da sugerencias de qué poner) . El control ha funcionado perfectamente hasta que hemos llegado a empezar a probar en serio y empezamos a meterles archivos de uns 500 líneas. A partir de ahí ya se ralentizaba el editor. Al final tuve que modificar la rutina de cálculo de líneas a dibujar y dividirla en dos: Una para las líneas en pantalla (que necesita partir cadenas y hacer chorrocientas comprobaciones para saber qué color poner, aparte de meter tabulaciones en el código y medir longitud de cadenas) y otra para las que no se ven, que simplemente se limita a poner tabulaciones al principio y medir la longitud de la cadena, con el consiguiente ahorro de cálculo.

A las dos semanas un nuevo problema: Con archivos de 1800 líneas vuelve a ir lento. Toca optimizar otra vez. Esta vez el problema no fue del editor en sí, sino de una estructura de árbol auxiliar que se actualiza cada vez que se modifica la estructura del documento (teniendo en cuenta que el árbol contaba con unos 900 nodos, tardaba unos tres segundos en actualizarse), por lo que me las tuve que apañar y hacer que solamente actualizase los nodos que se habían modificado en vez de reescribir todo el árbol, con lo que en vez de redibujar 900 cadenas de texto solo dibujaba un par de ellas a pesar de tener que recorrerse casi todo el árbol.

Conclusión: Al principio cuando programas código lo haces de la manera que te parece más adecuada, pero no sabes hasta qué punto te va a llegar a funcionar como tú deseas. No piensas que tal vez la manera que tienes de hacer una búsqueda o de calcular un parámetro se puede hacer tal vez con uno poco más de código, pero que a la hora de ejecutarse reporta una gran velocidad de ejecución cuando se trata de datos grandes -puede que sea un pelín más costoso con pocos, pero lo importante viene en lo “gordo”-. Por lo que me he dado cuenta que es bueno hacer pruebas “bestias” sobre nuestro código para comprobar que soportará casos extremos aunque sean muy pero que muy raros.


En otro orden de cosas. He estado leyendo las noticias sobre Google Android del Mobile World Congress; y la verdad es que me he echado para atrás en mi proyecto para el concurso. Primero, porque no me fío de que hayan aplazado el concurso un mes y medio, segundo, porque quiero hacer otras cosas más importantes para mí ( ¡Armors, Armors!….. ¡Rotor-O-scope, Rotor-O-scope!) , tercero, ya han dicho más o menos qué tipo de terminales van a llevar el sistema, y mi proyecto está orientado a GPS y a personas bastante jóvenes que es bastante probable que no se vayan a hacer con un terminal de tercera generación, y cuarto, que ha decepcionado bastante a la gente que lo ha estado probando.Así que me quito un peso de encima y veo más cerca el día de ponerme otra vez con mis juegos, que es lo que me gusta (todavía estoy con el proyecto web-cómic-friki, pero ya le falta menos).

Publicado por Lord Cyberon el día 14 Febrero de 2008 a las 20:12

Seguimos por aquí

5 Febrero de 2008

Aún sigo vivo, no actualizo mucho porque estoy un poco liado y no tengo mucho que contar. Aparte de que han atrasado el desafío de Google Android hasta el 14 de Abril y voy a tener tiempo de terminar el proyecto, la única noticia destacable es que me he conseguido coger las primeras 120 estrellas de Mario Galaxy (las cuatro últimas me han costado cerca de cinco horas, pero lo he conseguido), para llevarme la sorpresa de que aún me queda la mitad del juego, pues resulta que después de jugar con Mario tienes que pasarte el juego con Luigi para poder acceder, según he leído por internet a la estrella número 121. Así que ahora que ya me lo he pasado me lo tomaré con más calma para conseguir el resto, o quizás como ya me sé los niveles me los pases antes. ¿Quén sabe?. De todos modos aún tengo que terminarme el Aquaria y jugar al TimeShift, Crysis y pillarme el Zelda y el Metroid de Wii, por lo que espero que no salgan títulos buenos en un tiempo porque si no me voy a agobiar de querer jugar y querer hacer cosas a la vez.

A propósito, el proyecto web del que hablé en la entrada anterior sigue adelante, espero que próximamente esté operativo, pero tengo que terminar un programita del que depende dicho proyecto, y espero que no me cueste ya mucho de terminar, porque estoy aprendiendo con él las nuevas WPF del visual studio 2008. Cuando tenga la web operativa diré algo por aquí. Y con respecto a Armors, está un poquito parado y rotor-O-scope voy a reescribirlo con XNA 2.0 (menos mal que el juego es pequeñito, lo programé en dos semanas) para mejorarle algunas opciones, porque por ejemplo, no tiene ni siquiera un mísero menú de configuración.

Así que por aquí seguimos…

Publicado por Lord Cyberon el día 5 Febrero de 2008 a las 20:57