Mandelbrot benchmark

21 views
Skip to first unread message

galil...@gmail.com

unread,
Apr 10, 2016, 4:08:33 PM4/10/16
to reda4
Encontré este programa que pretendía ser una prueba de rendimiento de la máquina virtual X-11 basic. reda4 demuestra ser rápido.

Pablo, me gustaría saber cómo hacer para evitar que el programa parezca "congelado" (aparece el mensaje "no responde") mientras realiza los cálculos.

| Fractal como prueba de rendimiento
| Programa original de Markus Hoffman (2007) para la maquina virtual X11-basic
| Adaptacion de Galileo (2016)

^r4/lib/gui.txt

#bx 0 | Ubicacion
#by 0
#bw 512 | Dimensiones de la ventana
#bh 480
#sx -1.5 | Desplazamiento de la imagen
#sy -1.0
#tw 2.0 | Escala
#th 2.0

:color | c --
  dup dup 8 * 255 mod rot 4 * 255 mod rot 2* 255 mod 8 << or 8 << or ink ;

:calcula | x y gx gy -- zx zy c
  2dup 0 ( 256 <? )( 1+ >r
    over dup *. over dup *. - pick4 + | zx
    rot 2 * rot *. pick2 +            | zy
    over dup *. over dup *. + 4.0 >? ( drop r> ; )
  drop r> ) ;

:mandel "Se esta dibujando un fractal. Paciencia ..." print redraw
  0 0 ( bh <? )( dup
    by - bh /. th *. sy + pick2 | gx
    bx - bw /. tw *. sx + swap  | gy
    calcula >r 4drop r>
    color 2dup pix! swap 1+ bw =? ( drop 1+ 0 ) swap
  ) 2drop ;

: msec clrscr mandel msec swap - blanco "Se ha tardado %d ms" print show 'exit >esc< ;


Pablo Hugo Reda

unread,
Apr 10, 2016, 5:09:58 PM4/10/16
to reda4
En realidad no hago nada,

SHOW utiliza una palabra UPDATE que comunica al bucle de windows que descargue los eventos de la ventana, mientras no ejecutas UPDATE no hay interaccion con el SO. pero no es todo tan claro.

Esta parte es un gran lio, depende del windows, seguramente yabasic lo maneja distinto y ahi esta la diferencia.

Por mi parte lo que fui haciendo son pruebas de diferentes formas de manejar esto y me quede con la que mejor funcionaba.

Me gustaria tener mas control sobre esto, por ejemplo que :r4 corra en un SO propio, pero no tengo tiempo para un proyecto asi, ademas prefiero programar en :r4 que en ASM!!!

como nota, si desde el editor apretas F5, se compila el programa y se ejecuta. F6 para una version fullscreen
el programa queda en r4asm/r4fasm.exe, ahora se ejecuta solo, sin el interprete.
el codigo compilado es cod.asm y dat.asm (codigo y dato) y utiliza unas rutinas de interface r4fasm.asm para windows.

galil...@gmail.com

unread,
Apr 11, 2016, 12:08:46 PM4/11/16
to reda4
Vale. He puesto UPDATE en ( drop 1+ 0 update ) y ahora va bien. Pero si lo pongo, digamos, al principio de la palabra mandel, después del dup, se queda como congelado en el mensaje inicial. La modalidad fullscreen no la he probado, pero la de creación del autoejecutable ya la había descubierto. Yabasic 2.763 también es capaz de generarlos, así que me alegré mucho de que reda4 incluyera esta opción.

Pablo Hugo Reda

unread,
Apr 11, 2016, 7:36:32 PM4/11/16
to reda4
Bien, update actualiza los eventos del sistema, es un mensaje al windows diciendo..ahora atiendo el teclado y el raton, si win no recibe este comportamiendo dice..esta congelado.. se debe llamar constantemente, no al principio y nada mas.

la llamada correcta seria
0 update drop
usa el 0 como delay, le dice al win que atienda otros eventos.

fijate la definicion de SHOW en lib/show.txt
Reply all
Reply to author
Forward
0 new messages