Y el equipo con el BASIC más rápido es...

Foro dedicado a la programación en todo tipo de sistemas clásicos.
Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 53 veces
Contactar:

Re: Y el equipo con el BASIC más rápido es...

Mensajepor mcleod_ideafix » 03 Nov 2012, 21:08

Namek escribió:Por lo que yo se el BASIC del AMSTRAD CPC hace el scroll de texto por hardware, asi que en realidad no mueve nada, solo borra la parte de la pantalla que sale por el otro lado y la redibuja con el nuevo contenido, corregidme si me equivoco. :roll:


Anda, pues sí. Es verdad que el CRTC del Amstrad puede hacer eso... :)
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

dancresp
Amiga 1200
Amiga 1200
Mensajes: 1393
Registrado: 23 Dic 2008, 17:53
Sistema Favorito: MSX
primer_sistema: ZX81
Primera consola: Atari 2600
Gracias dadas: 3 veces
Gracias recibidas: 20 veces

Re: Y el equipo con el BASIC más rápido es...

Mensajepor dancresp » 03 Nov 2012, 21:13

Puse el ATARI ST porque lo tenía montado, y ya puesto ver si se podía comparar con los 8 bits, pero mi principal intención consistió en testear los BASIC de máquinas de 8 bits.

Como bien dice mcleod, se pueden hacer pruebas mejores ya que unos tiran bien en unos aspectos y otros en otros, pero bueno, como curiosidad y darte el gustazo de teclear el mismo programa en 21 equipos en dos noches no está mal. :P

Si alguien se anima a hacer algo similar con otros mini-programas... :-ss
Buscando la IP de la W.O.P.R.

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 53 veces
Contactar:

Re: Y el equipo con el BASIC más rápido es...

Mensajepor mcleod_ideafix » 03 Nov 2012, 21:58

dancresp escribió:Si alguien se anima a hacer algo similar con otros mini-programas... :-ss

Aquí va un pequeño aporte.

El programa es el bucle SAXPY del que ya he hablado. Lo he probado en los siguientes micros:
Spectrum 48K (Spectaculator)
Commodore 64 (VICE)
Amstrad CPC464 (WinAPE)
MSX-1 genérico (BlueMSX)
Dragon 32 (XROAR)
Sinclair QL (Q-Emulator)
SAM Coupé (SimCoupe)
BBC Micro (BeebEm)

Para todos ellos, como se indica, he tirado de emuladores. Un emulador, si respeta la temporización del micro respecto de la pantalla (emulada), deberá dar el mismo resultado en el emulador y en el equipo real.
Todos estos micros, además, tienen un BASIC que permite, con mayor o menor facilidad, disponer de un cronómetro para medir tiempos. Todos excepto el QL ofrecen una resolución de al menos 20 milisegundos en dicho cronómetro (1/50 de segundo). Algunos como el Amstrad o el BBC Micro ofrecen más resolución (1/300 de segundo el Amstrad, y 1/100 de segundo el BBC Micro). El cronómetro del QL sólo ofrece segundos, así que para tener algo de precisión, he hecho un bucle que da 10 veces más vueltas, y luego he dividido el tiempo total entre 10. Con eso al menos tengo una cifra decimal y llegar a resolución de décimas de segundo en todos los equipos.

He aquí los resultados:

saxpy_spectrum48k.png
saxpy_spectrum48k.png (9.2 KiB) Visto 6744 veces

saxpy_c64.png
saxpy_c64.png (3.91 KiB) Visto 6744 veces

saxpy_amstrad.png
saxpy_amstrad.png (3.8 KiB) Visto 6744 veces

saxpy_msx.png
saxpy_msx.png (38.1 KiB) Visto 6744 veces

saxpy_dragon32.png
saxpy_dragon32.png (3.68 KiB) Visto 6744 veces

saxpy_ql.png
saxpy_ql.png (2.84 KiB) Visto 6744 veces

saxpy_samcoupe.png
saxpy_samcoupe.png (44.29 KiB) Visto 6744 veces

saxpy_bbc.png
saxpy_bbc.png (40.25 KiB) Visto 6744 veces


Para este benchmark, el ranking quedaría así:
BBC Micro : 0,44 seg.
Amstrad CPC464 : 0,89 seg.
Sinclair QL : 0,9 seg.
Dragon 32 : 1,1 seg.
MSX-1 genérico : 1,28 seg.
Commodore 64 : 1,52 seg.
SAM Coupé : 1,62 seg.
Spectrum 48K : 1,94 seg.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

dancresp
Amiga 1200
Amiga 1200
Mensajes: 1393
Registrado: 23 Dic 2008, 17:53
Sistema Favorito: MSX
primer_sistema: ZX81
Primera consola: Atari 2600
Gracias dadas: 3 veces
Gracias recibidas: 20 veces

Re: Y el equipo con el BASIC más rápido es...

Mensajepor dancresp » 03 Nov 2012, 22:09

Dime que estabas esperando que te lanzara el guante para publicar esto... ;)

Muy interesante, habrá que compararlo con mis resultados a ver si la cosa cambia mucho, aunque a primera vista me ha parecido que no.

De todas formas, yo usé equipos originales porque los emuladores no me acabaron de convencer.

Gracias !!!
Buscando la IP de la W.O.P.R.

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 53 veces
Contactar:

Re: Y el equipo con el BASIC más rápido es...

Mensajepor mcleod_ideafix » 03 Nov 2012, 22:22

Unos comentarios a colación de este ranking:

BBC Micro : 0,44 seg. Brutal. Se confirma lo que Dancresp ya había medido. Me quito el sombrero. No conozco la historia detrás del desarrollo del BASIC de este micro, pero ha batido con diferencia todas las marcas.

Amstrad CPC464 : 0,89 seg. Recuerdo en los anuncios de Microhobby como una de las cosas que se alababan de este micro era su Locomotive BASIC, más avanzado y rápido que sus coetáneos. No se equivocaban.

Sinclair QL : 0,9 seg. Para ser un micro con estructura interna de 32 bits, registos a porrillo, y 7MHz de velocidad (excepto cuando está en contienda), el rendimiento en BASIC es más bien modesto. Uno podría llegar a pensar que las rutinas de cálculo deberían ir más rápidas en 32 bits y que la determinación de la dirección efectiva debería poder calcularse más rápidamente, pero se ve que algo, además de la contienda, le frena. ¿Será la multitarea que impone QDOS? ¿Será el propio intérprete que es lento porque soporta estructuras complejas, tales como variables locales, funciones, procedimientos, etc?

Dragon 32 : 1,1 seg. Ordenador modesto, pero que esconde un arma secreta en forma de MC6809 y sobre todo, una implementación por lo que se ve, optimizada, del Microsoft BASIC. Lástima que no fuera a mucha velocidad (recuerdo por ahí un POKE para que fuera más rápido).

MSX-1 genérico : 1,28 seg. Otro micro con Z80 y un BASIC a la vez versátil y rápido, aunque no tanto como el Amstrad.

Commodore 64 : 1,52 seg. BASIC muy parco, pero residente en 8K de ROM, por lo que intuyo que algunas operaciones habrán sacrificado velocidad por espacio. Por otra parte, al ser un BASIC muy sencillo, sin florituras, debería ser más fácil de interpretar. Tirando una cosa de un lado y otra de otro, tenemos un tiempo razonablemente rápido para un 6502 a menos de 1MHz de velocidad.

SAM Coupé : 1,62 seg. Inexplicable cómo un Z80A a 6MHz puede comportarse de esta forma. Bueno, en realidad explicable: la contienda a la que está sometido dicho Z80 es brutal, haciendo que su velocidad efectiva sea poco más que la de un Spectrum 48K. Aun así, esta velocidad es mayor que la velocidad efectiva del Amstrad, y queda muy por debajo de él. El BASIC del SAM Coupé es muy parecido internamente al del Spectrum, así que ambos irán más o menos igual.

Spectrum 48K : 1,94 seg. El peor, tardando más de 4 veces en hacer la misma tarea que el BBC Micro. Con un BASIC bueno en posibilidades (tiene comandos para gráficos, un evaluador de expresiones disponible para el usuario, y un manejo de E/S independiente de dispositivo, pero adolece de otras cosas, tales como el ELSE del IF, o WHILE-WEND para bucles), pero una interpretación lenta.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Luigi
Commodore 128
Commodore 128
Mensajes: 123
Registrado: 13 Oct 2012, 10:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Nintendo NES/Clónica
Primera consola: Nintendo NES/Clónica
Ubicación: Murcia

Re: Y el equipo con el BASIC más rápido es...

Mensajepor Luigi » 03 Nov 2012, 22:31

Me ha gustado el experimento, muy interesante.

jepalza

Re: Y el equipo con el BASIC más rápido es...

Mensajepor jepalza » 03 Nov 2012, 22:38

mcleod_ideafix escribió:Amstrad CPC464 : 0,89 seg. Recuerdo en los anuncios de Microhobby como una de las cosas que se alababan de este micro era su Locomotive BASIC, más avanzado y rápido que sus coetáneos. No se equivocaban.


Doy fé: El juego "Abracadabra" estaba hecho en Basic, y no se notaba. Yo creo que era de los pocos que salieron comercialmente en Basic, y no se llegó a notar diferencia alguna en velocidad respecto a su versión Spectrum, hecha en ASM.

Avatar de Usuario
jltursan
Amiga 2500
Amiga 2500
Mensajes: 4028
Registrado: 13 Oct 2006, 19:45
Sistema Favorito: MSX
primer_sistema: Dragon
Ubicación: Serracines, Madrid, España
Gracias dadas: 57 veces
Gracias recibidas: 157 veces
Contactar:

Re: Y el equipo con el BASIC más rápido es...

Mensajepor jltursan » 04 Nov 2012, 01:59

mcleod_ideafix escribió:BBC Micro : 0,44 seg. Brutal. Se confirma lo que Dancresp ya había medido. Me quito el sombrero. No conozco la historia detrás del desarrollo del BASIC de este micro, pero ha batido con diferencia todas las marcas.


Normal, le pasa lo que al Dragon, que con un 6502 a 2Mhz (cuando Apple, Oric, Commodore todos lo usan a 1Mhz) tira como una locomotora :-). Los Atari también lo tienen aceleradillo, sería interesante verlos en marcha.

mcleod_ideafix escribió:Dragon 32 : 1,1 seg. Ordenador modesto, pero que esconde un arma secreta en forma de MC6809 y sobre todo, una implementación por lo que se ve, optimizada, del Microsoft BASIC. Lástima que no fuera a mucha velocidad (recuerdo por ahí un POKE para que fuera más rápido).


POKE 65495,0, se desactiva con POKE 65494,0. Dobla la velocidad de la CPU hasta los 1,7Mhz. Realmente sólo se podría comparar en igualdad de condiciones con el BBC. Sacrificas la rutinas de E/S eso sí...
Hay otro poke que aún aumenta más la velocidad; pero le pasa como al ZX-81, que se pierde el refresco de pantalla.

Y digo yo, dado que la mayoría de BASIC residen en ROM, ¿no se podría acelerar en algo si sustituimos dichas ROM por equivalentes con acceso más rápido?. Supongo que no, la velocidad de acceso no vendrá únicamente determinada por la velocidad del IC, sino por algún elemento externo; pero por si las moscas yo dejo caer la pregunta...

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 53 veces
Contactar:

Re: Y el equipo con el BASIC más rápido es...

Mensajepor mcleod_ideafix » 04 Nov 2012, 02:07

jltursan escribió:Y digo yo, dado que la mayoría de BASIC residen en ROM, ¿no se podría acelerar en algo si sustituimos dichas ROM por equivalentes con acceso más rápido?. Supongo que no, la velocidad de acceso no vendrá únicamente determinada por la velocidad del IC, sino por algún elemento externo; pero por si las moscas yo dejo caer la pregunta...

Me temo que no. En estos micros la memoria ROM no es un cuello de botella (como sí lo es hoy día) y todos ellos, que yo sepa, acceden a la máxima velocidad que les permite sus relojes. Algunos micros como el MSX (esto lo sabrás tú mejor que yo) meten un estado de espera en M1, pero no sé por qué lo hacen (aparte de permitir así hacer los cálculos de ciclos más cómodamente al ser siempre múltiplo de 4 ¿¿??). En este caso, si se puede eliminar el ciclo de espera, tendrás un poco de más velocidad.
Por lo general, la única forma de acelerar un sistema es haciendo que el reloj de la CPU vaya más rápido, dentro de los márgenes tolerables por cada CPU. Es decir, hacer lo que hace el Dragon con el POKE, o el SAM Coupé cuando no usas el modo de video compatible con el Spectrum.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista

Avatar de Usuario
mcleod_ideafix
Amiga 2500
Amiga 2500
Mensajes: 5316
Registrado: 06 Oct 2009, 04:12
Sistema Favorito: Spectrum 16Kb/48Kb
primer_sistema: Spectrum 16Kb/48Kb
consola_favorita: Vectrex
Primera consola: TV Games/Pong Clone
Ubicación: Jerez de la Frontera
Gracias dadas: 12 veces
Gracias recibidas: 53 veces
Contactar:

Re: Y el equipo con el BASIC más rápido es...

Mensajepor mcleod_ideafix » 04 Nov 2012, 02:11

mcleod_ideafix escribió:Algunos micros como el MSX (esto lo sabrás tú mejor que yo) meten un estado de espera en M1, pero no sé por qué lo hacen (aparte de permitir así hacer los cálculos de ciclos más cómodamente al ser siempre múltiplo de 4 ¿¿??). En este caso, si se puede eliminar el ciclo de espera, tendrás un poco de más velocidad.


Dicho y hecho. En esta página comentan que "no pasa nada" si en los MSX se quita la señal de WAIT en el Z80. De hecho se consigue un 10% más de velocidad :)
http://www.msx.org/news/hardware/en/msx ... t-wait-pin
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista


Volver a “Programación”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 11 invitados