Gemix también sirve para freir Hot Dogs!

Discusión en general sobre Gemix.

Gemix también sirve para freir Hot Dogs!

Postby erkosone » Sat Jun 08, 2013 6:42 am

jeje... pese al título del mensaje esto no es spam :lol:

He terminado mi algoritmo de relleno por difusión para 2d, optimizando las partes mas sensibles que me daban problemas en un lenguaje como Gemix, y el resultado de este pequeño código de apenas 30 lineas es asombroso, se mueve mucho mas rápido de lo que podía imaginar cuando lo empecé a hacer.. directamente pensaba que sería una mierda todo sea dicho, pero me he llevado la sorpresa de que corre que se las pela!
No diré que tanto como si estuviera hecho en C claro que no.. pero puedo decir que hay programas de pago que hacen esto mismo mas lento XD..

Eso si.. he desaprobechado la memoria a lo grande :P pero parece que no va demasiado lento, la imagen es de 800x600 ;)

Lento para ver el proceso:


En tiempo real creando varios rellenos simultaneos..
Es una pasada lo que llega a rendir para ser interpretado.. tiene optimizado el tema de los nodos padre para no lanzar instancias del la función "casi recursiva" en la zona desde donde se lanzó la actual.. yo creo que ha quedado chapó hehehe..
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Gemix también sirve para freir Hot Dogs!

Postby GINO » Sat Jun 08, 2013 9:17 am

Has probado con punteros?
User avatar
GINO
 
Posts: 2823
Joined: Thu Jul 31, 2008 10:25 pm

Re: Gemix también sirve para freir Hot Dogs!

Postby erkosone » Sat Jun 08, 2013 2:50 pm

No lo he probado GINO, lo que quería hacer es una lista enlazada de nodos para optimizar la memoria, supongo que te refieres a eso, pero hay un bug con los typedefs pasados por referencia en la beta actual, ha comentado CicTec que ya lo tiene reparado en la que va a salir.

Lo he hecho usando la propia pila de procesos de gemix, osea directamente por procesos, y le he añadido al algoritmo original una comprobación del nodo padre para que si el padre estaba a la izquierda el nodo actual no intente rellenar en la dirección que estaba el padre ya que es seguro que ya está relleno.

Te pego el código, seguro que tu sabes como optimizar esto mas todavía jeje.. si tienes un minuto dale un ojo haber si le ves algo que pueda optimizarse ahun mas ;)
You do not have the required permissions to view the files attached to this post.
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Gemix también sirve para freir Hot Dogs!

Postby erkosone » Sat Jun 08, 2013 4:37 pm

Los 'FRAME;' que hay en el código son intencionados, no se como evitar el desbordamiento de pila del interprete sin ellos, tengo que ir liberando procesos cada poco para que no pete.. si no se crea una lista demasiado grande de saltos en el stak, esto con áreas mas pequeñas no pasa claro.. es que este ejemplo tiene un area realmente grande para rellenar y se crean demasiadas instancias que se quedan esperando a que la siguiente retorne.
Con sprites no hacen falta los 2 frames y lo hace casi instantaneamente.
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.


Return to General

Who is online

Users browsing this forum: No registered users and 2 guests