He estado investigando y haciendo varias pruebas de rendimiento y optimizacion para un proyecto que estoy haciendo y he llegado a algunas conclusiones que supongo muchos de vosotros ya sabeis, pero para el que aun es un novatillo como yo igual le interesa.
Se trata de la clase ViewStack que por una parte es una buena forma de cambiar entre pantallas sin necesidad de programar grandes cantidades de codigo, pero por otra parte hay que darse cuenta que no esta muy bien optimizada que digamos. Si lo que se pretende es hacer una aplicacion sencilla no cabe duda que esta clase hace un buen papel pero si quieres llegar mas lejos todavia como es mi caso ( papervision ) hay a veces que el uso de esta clase hace que se ralentice tu proyecto.
Me explico:
Cuando tu creas una nueva lista de vistas ( <mx:ViewStack> <canvas 1> <canvas 2> ... <canvas n> </mx:viewstack> ya a priori el contenido de los canvas no se carga en memoria menos el primero de ellos ( indice 0 ) o el que le digamos. Y cuando cambiamos a otro indice ( selectedIndex = 1 por ejemplo ) cargamos en memoria el contenido de la siguiente vista, estando la vista 0 ya cargada en memoria ( entonces si volvemos al indice 0 lo que hay se pone mas deprisa ). Ahora imaginate que tienes 1000 vistas donde en cada una cargas una pelicula de papervision, cuando llegues a la vista 10 te petara el programa ya que el viewstack no libera de la memoria ( o no hace un removeChild ) de los que ya has visto.
Visto esto, mi idea es la de moficiar esta clase ( o hacer una nueva heredada ) para que este problemilla se solvente, por ejemplo, haciendo que la vista que cambiamos por otra se libere o se descuelgue (removeChild) y asi poder seguir cargando mas cosas en memoria. Claro muchos diran, "entonces utilizar esta clase es una caca", claro, pero ahora imaginate que modificamos el viewstack para que solamente hayan en memoria 3 vistas y de esa forma tener mas rapideza para cambiar entre ellas. Es decir, cargamos la primera la segunda y tambien la tercera para que cuando pasemos a la segunda ira mas rapido porque ya estara cargada. La idea es tener 2 vistas delante y detras para optimizar la velocidad y los recursos.
NOTA: esta idea seria para vistas lineales, que no salten del indice 0 al 5 por ejemplo, pero que tambien se podria optimizar.
Bueno, no suelo explicarme muy claramente pero creo que la idea se entiende, asi que si alguien sabe si ya existe algo parecido a lo que quiero hacer que me lo diga.
Gracias
