domingo, 14 de abril de 2013


Gray Scott y FitzHugh Nagumo - Reaction Diffusion System Simulation v.2


 Hola de nuevo. Ayer 13 de Abril del 2013, conseguí optimizar algo más este programa.

 En esos días estaba metido en un nuevo proyecto de un autómata celular y recordando que el método de comprobación de los límites de Gray Scott y el de mi nuevo proyecto son el mismo, (lo que sucede en un límite afecta al límite contrario de la matriz), lo he volví a examinar y me dí cuenta que se podía optimizar algo más, al principio pensaba que el resultado no seria nada del otro mundo, pero... pasar de menos de 4 frames por segundo a 17, 18 o incluso de vez en cuando a 19, me dejó perplejo, puesto que solamente había separado las funciones duplicando las existentes para reducir la comprobación de si era 'arriba - abajo' o 'izquierda - derecha' y eliminado en la llamada a las nuevas funciones las cadenas de texto usadas para ese control.

 Todo esto parecía algo normal, ya que estaba modificando las comprobaciones que realizan unas funciones que son intensamente utilizadas por frame. Eso pensaba, pero para verificar esto, me plantee si la mejora estaba en mi optimización o en el hecho de reducir los datos de las llamadas a las funciones (pasa de 2 a 1), así que volví a reescribir las funciones con las llamadas originales, quedando de nuevo las funciones con 2 datos con llamada, aunque el segundo dato es inútil y aquí sucedió algo de nuevo increíble, los frames por segundo volvieron a ser 3.

 Tras esta decepcionante situación pensé en cambiar las llamadas de cadena por valores numéricos, los cambie a integer y oh sorpresa, de nuevo 17, 18 frames.

 Conclusión, si theoreticalpoodle hubiera utilizado desde el principio valores numéricos y no cadenas de texto (de solo un caracter), habría triplicado el rendimiento pasando de casi 3 frames a 9/10 (también incluido en esta nueva versión del programa) una auténtica barbaridad. Claro que yo tampoco me habría metido en estos lios de intentar optimizar algo que parecía imposible :-p.

 El ejecutable ha sido compilado con FreeBasic 0,24.

 Todos los datos sobre los frames, de este artículo como el de mi anterior han sido realizadas con el método Gray Scott, el método de FitzHugh Nagumo es algo más rápido (llega fácilmente a los 20 frames con la última optimización).

 El teclado es el mismo y usando la tecla 'M' se cambia entre todos estos modos de funcionamiento.

 Solo he añadido las teclas del 1 al 6 para facilitar el acceso a estos nuevos modos.

1 Funcionamiento original de theoreticalpoodle con String

2 Funcionamiento Optimizadas con String

3 Funcionamiento Optimizadas por Separado

4 Funcionamiento Optimizadas por Separado con String

5 Funcionamiento Optimizadas por Separado con Integer

6 Funcionamiento original de theoreticalpoodle con Byte


 Unos vídeos de YouTube


 Muestra del funcionamiento de la versión 2, cuando empieza o se pone lento es como funciona la versión 1.



 Muestra del funcionamiento de la versión 2, integrada en la recopilación de aplicaciones que ya anuncie en mi anterior artículo del blog 'Conjunto de Mandelbrot - Animación v1.1 (6/2/2013 a 14/2/2013)'.

 Como se puede apreciar aumenta las posibilidades de la versión reducida al permitir usar paletas de colores y ampliar la zona de trabajo a costa de disminuir la velocidad de la animación.



La descarga contiene el ejecutable y el código fuente de la nueva versión.
Gray Scott - Reaction Diffusion System Simulation v.2 56,18 kb











No hay comentarios:

Publicar un comentario