Y el equipo con el BASIC más rápido es... (1ª parte)

dancresp
Mensajes: 5629
Registrado: 13 Nov 2010 02:08
Agradecido : 311 veces
Agradecimiento recibido: 446 veces

Y el equipo con el BASIC más rápido es... (1ª parte)

Mensajepor dancresp » 17 Jul 2012 14:17

Llevo un tiempo intentando exprimir al máximo las posibilidades del BASIC de distintos sistemas de 8 y 16 bits.

Con la experiencia que me da el haber programado el mismo programa en varios equipos me surgió la idea de hacer varias pruebas para comprobar que equipo tiene el BASIC más rápido.

Así, en una primera fase he decidido ejecutar un par de sencillos programas en multitud de sistemas, cronómetro en mano, para obtener la respuesta a mi pregunta.

Imagen
Imagen
Imagen
Imagen
Imagen
Imagen


El test se compone de estos dos programas de 5 líneas cada uno:

1) Poner texto en pantalla
Un doble bucle que situa una "X" en una posición determinada de la pantalla. En total se repito 32x16=512 veces. He tenido en cuenta que el AT del SPECTRUM, es el LOCATE del MSX, el PLOT del ORIC, etc., que en unos pones X,Y y en otros Y,X. Y que en unos la primera posición es la 0 y en otros la 1. Los valores los he adaptado a la resolución del DRAGON y el LASER 200.

10 FOR F=1 TO 16
20 FOR I=1 TO 32
30 PRINT AT F,I;"X"
40 NEXT I
50 NEXT F


2) Calcular e imprimir el resultado en pantalla
Se realiza, sobre el valor de una variable, un cálculo consistente en una multiplicación, una división y una resta. Esto se repite 99 veces y se va mostrando el resultado en pantalla.

10 A=1
20 B=A*2/3-4
30 PRINT B
40 A=A+1
50 IF A<100 THEN GOTO 20

Cada prueba se ha realizado con la pantalla inicialmente en blanco y se ha repetido entre 3 y 5 veces para sacar una media del tiempo empleado, ya que como no soy un robot, mi cuerpo necesita unos ciclos para activar los músculos que pulsarán los botones START y STOP del cronómetro.

Imagen
Imagen
Imagen
Imagen


Os muestro los resultados en "segundos:decimas", ordenados de más a menos rápido.

Resultados PROGRAMA-1: (Poner texto en pantalla)

01:23 = ATARI ST (usando GFA BASIC)
02:03 = BBC MICRO
02:80 = SHARP MZ-700
03:54 = ACORN ELECTRON
04:14 = ORIC-1
04:47 = MSX (03:54 usando variables integer)
04:56 = COMMODORE 16
04:91 = ATARI 800
05:20 = AMSTRAD CPC-464+
05:38 = DRAGON 32 (Incluye F*32+I, sino 02:04)
05:46 = THOMSON TO8
05:52 = COMMODORE 128
05:54 = SPECTRUM
06:03 = SINCLAIR QL
07:34 = ALPHATRONIC PC
10:49 = LASER 200 (* leer en conclusiones)
28:66 = TEXAS INSTRUMENTS TI-99/4A
48:42 = ZX-81 (08:22 en modo FAST)


Resultados PROGRAMA-2: (Calcular e imprimir el resultado en pantalla)

01:92 = BBC MICRO
02:60 = ATARI ST (usando GFA BASIC)
02:95 = ACORN ELECTRON
03:91 = DRAGON 32
04:15 = AMSTRAD CPC-464+
04:24 = AMSTRAD PCW-8256
05:45 = COMMODORE 64
05:60 = MSX (05:26 usando variables integer)
05:91 = COMMODORE 16
06:16 = LASER 200
06:59 = ATARI 800
07:03 = COMMODORE 128
07:52 = SPECTRUM
07:96 = SHARP MZ-700
08:29 = ALPHATRONIC PC
10:14 = SINCLAIR QL
10:42 = THOMSON TO8
11:29 = ORIC-1
22:79 = TEXAS INSTRUMENTS TI-99/4A
62:32 = ZX-81 (11:48 en modo FAST)


Conclusiones:

- La bestia negra de los 8 bits es sin lugar a dudas el BBC MICRO.

- El ZX-81 come a parte, aunque en modo FAST funciona 6 veces más rápido.

- El DRAGON-32 no posiciona los caracteres en pantalla por coordenada X,Y sino que lo hace con una posición absoluta. En el primer ejercicio se ha optado por simular un posicionamiento mediante el cálculo F*32+I. Y a pesar de haber realizado 512 multiplicaciones y sumas, ha tardado poco más que la mayoría. Esto indica que un programa bien realizado lo hará funcionar casi tan rápido como el BBC MICRO.

- Según el punto anterior, el BASIC del DRAGON es el segundo más rápido en 8 bits.

- El caso del posicionamiento en pantalla del LASER 200 es igual al del DRAGON 32, pero teniendo en cuenta que para imprimir 512 "X" una a continuación de la otra ya ha tardado casi 11 segundos, no he probado a hacerlo con el mismo cálculo que el DRAGON-32.

- Hay ordenadores con un rápido acceso a pantalla, pero al hacer cálculos su rendimiento cae. Caso del ORIC-1 y el SHARP MZ-700, entre otros. Supongo que las rutinas del calculador no deben estar bien depuradas.

- En el caso de los MSX, se ha ejecutado el test dos veces, uno normal y el otro usando variables "integer %". En el primer test el rendimiento mejora un 20%, y en el segundo test, limitando los integer a la variable A, el rendimiento mejora un 10%. Es de suponer que en otros sistemas que admite el uso de variables integer el rendimiento también debería mejorar.

- Teniendo en cuenta la diferencia de velocidad entre los dos ejercicios en un mismo equipos, no descarto realizar algún ejercicio más para comprobar otras características, y mejorar el promedio total.


Más adelante me gustaría hacer un test de rutinas gráficas.

Pues nada más, esta noche seguiré con otros equipos, a ver si cambian los resultados...

P.D.:
Las primeras 3 fotos son ampliables por si alguien quiere hacer el "chafarderete" en mi estantería. !ein

Buscando la IP de la W.O.P.R. he encontrado mi índice

Avatar de Usuario
[UFO]
Mensajes: 610
Registrado: 02 Jun 2011 21:18

Re: Y el equipo con el BASIC más rápido es... (1ª parte)

Mensajepor [UFO] » 17 Jul 2012 14:33

Bravo, dancresp, impresionate el trabajazo que te has pegado. La verdad es que los resultados son mu interesantes y darán que hablar seguro. ¡Esto es investigación cacharril pura y dura!

javu61
Mensajes: 325
Registrado: 26 Mar 2011 15:58
Agradecimiento recibido: 1 vez

Re: Y el equipo con el BASIC más rápido es... (1ª parte)

Mensajepor javu61 » 17 Jul 2012 14:40

Spectrum y ZX parten con el inconveniente de que todos los números los trata como de punto flotante, por tanto cualquier uso de una variable (aunque sea solo usar su valor) es lento.

Avatar de Usuario
ferix
Mensajes: 1009
Registrado: 28 May 2012 21:01
Agradecimiento recibido: 8 veces

Re: Y el equipo con el BASIC más rápido es... (1ª parte)

Mensajepor ferix » 17 Jul 2012 14:44

Echo en falta al Apple II en la comparativa, aunque entiendo que por no "estar disponible".

Genial comparativa :D

Edito: Me acabo de dar cuenta de que falta otro clásico, el C64, aunque imagino que los resultados serán parecidos a los del C16.

mcleod_ideafix
Mensajes: 925
Registrado: 13 Ene 2012 09:45

Re: Y el equipo con el BASIC más rápido es... (1ª parte)

Mensajepor mcleod_ideafix » 17 Jul 2012 14:44

Una pregunta: en el test 2... ¿cómo has medido el tiempo del Spectrum? Hay que imprimir 99 cosas en pantalla y cuando el Spectrum la llena, se queda esperando con el mensje "Scroll?" haciendo que parezca que tarda más que los demás en ejecutar el programa.

El test 2, a mi juicio, no debería tener ningún tipo de E/S, si lo que se pretendía era medir la velocidad del BASIC realizando cálculos.

De hecho, el test 2 en Spectrum, cambiando la línea 30 así:

Código: Seleccionar todo

30 PRINT b;


Para evitar el "Scroll?", hace que el Spectrum tarde exactamente 3 segundos en ejecutar el test 2.

Analogamente, si el test 1 pretende medir la velocidad del BASIC en operaciones de E/S, no debería tener ningún cálculo. El LOCATE/AT/etc incurre en cálculos que en el caso del Dragon lo hacen parecer más lento de lo que en realidad es. A tal fin, hubiera bastado con algo como:

Código: Seleccionar todo

10 FOR I=1 TO 512
20 PRINT "A";
30 NEXT I


Por cierto, no sé si te has inspirado en esto, pero es curioso que ya en 1986 se hizo algo muy similar a lo que has hecho :D

http://youtu.be/PrgE_C-ZMpY
Cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista.

dancresp
Mensajes: 5629
Registrado: 13 Nov 2010 02:08
Agradecido : 311 veces
Agradecimiento recibido: 446 veces

Re: Y el equipo con el BASIC más rápido es... (1ª parte)

Mensajepor dancresp » 17 Jul 2012 14:56

mcleod_ideafix escribió:Una pregunta: en el test 2... ¿cómo has medido el tiempo del Spectrum? Hay que imprimir 99 cosas en pantalla y cuando el Spectrum la llena, se queda esperando con el mensje "Scroll?" haciendo que parezca que tarda más que los demás en ejecutar el programa.

Efectivamente, mientras se ejecutaba iba pulsando la tecla "Return" para que no se detuviera, pero efectivamente puede haber afectado en algo a su resultado.

La gracia consistía en ver lo que tardaba en hacer los cálculos y forzarle a hacer un SCROLL de pantalla. En el SPECTRUM, el hecho de no tener modo de texto hacer que el SCROLL sea más lento porque ha de mover más bytes.


mcleod_ideafix escribió:Analogamente, si el test 1 pretende medir la velocidad del BASIC en operaciones de E/S, no debería tener ningún cálculo. El LOCATE/AT/etc incurre en cálculos que en el caso del Dragon lo hacen parecer más lento de lo que en realidad es. A tal fin, hubiera bastado con algo como:

En los juegos te interesa situar algo en un punto concreto de la pantalla, y la gracia era ver cuanto tardan en hacerlo.

De todas formas, como ya digo, el DRAGON a pesar de todos los cálculos es casi tan rápido como la mayoria, con lo que usando la @ como AT es mucho más rápido.

En los 8 bits cada equipo es un mundo.


mcleod_ideafix escribió:Por cierto, no sé si te has inspirado en esto, pero es curioso que ya en 1986 se hizo algo muy similar a lo que has hecho :D

http://www.youtube.com/watch?v=PrgE_C-ZMpY

Pues no, pero agradezco el enlace. Más tarde me lo miro.

la idea surgió de un video que colgó ron de un test entre tres equipos, el QL, el BBC y un ¿AMSTRAD?

Buscando la IP de la W.O.P.R. he encontrado mi índice

Avatar de Usuario
ron
Mensajes: 18951
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 2030 veces
Agradecimiento recibido: 1745 veces

Re: Y el equipo con el BASIC más rápido es... (1ª parte)

Mensajepor ron » 17 Jul 2012 15:46

YA te digo, este post me encanta, si aceptas aportaciones gustoso las haré.

Avatar de Usuario
Radastan
Mensajes: 154
Registrado: 09 Sep 2016 11:32
Agradecido : 6 veces
Agradecimiento recibido: 41 veces

Re: Y el equipo con el BASIC más rápido es... (1ª parte)

Mensajepor Radastan » 17 Jul 2012 18:05

Pues me gustaría saber los valores de estos test en el Sam Coupé, porque es el BASIC más veloz que he visto en mi vida (por no hablar de uno de los más potentes).

Avatar de Usuario
FloppySoftware
Mensajes: 224
Registrado: 21 Oct 2016 15:10
Agradecido : 36 veces
Agradecimiento recibido: 41 veces
Contactar:

Re: Y el equipo con el BASIC más rápido es... (1ª parte)

Mensajepor FloppySoftware » 17 Jul 2012 20:08

Hola,

Menudo palizón te has dado, me parece muy interesante.

Eso sí, como fan acérrimo que soy del Amstrad PCW, hago una petición:

¡¡¡INCLUYE AL AMSTRAD PCW!!!

No tiene la órden AT o LOCATE, pero se puede sustituir por la correspondiente secuencia de escape de consola, como ya sabrás.

Y el Basic Mallard tiene fama de ser uno de los más rápidos.

Eso sí, estoy de acuerdo en que para medir la velocidad del Basic (y nada más que la del Basic), no debería haber interacción ninguna con el sistema operativo que hay debajo (principalmente entradas de teclado, y salidas de pantalla).

Por lo demás, me quito el sombrero.

Saludos.
Developing software since 1987 - http://www.floppysoftware.es

Avatar de Usuario
Silicebit
Mensajes: 1548
Registrado: 16 May 2011 21:13
Ubicación: La buhardilla del silicio.
Agradecido : 114 veces
Agradecimiento recibido: 266 veces
Contactar:

Re: Y el equipo con el BASIC más rápido es... (1ª parte)

Mensajepor Silicebit » 17 Jul 2012 20:36

Habría que tener en cuenta que el 6502 del BBC micro trabaja a 2MHz, y eso lo hace volar.
El 6809 es el Rolls-Royce de los 8bits, el 6502 es el Mercedes, y el Z80 el SEAT 850. Sorry, but... I think different. :-P -0r1c -m3s3x -t4nd1 -cbmja YouTube

mcleod_ideafix
Mensajes: 925
Registrado: 13 Ene 2012 09:45

Re: Y el equipo con el BASIC más rápido es... (1ª parte)

Mensajepor mcleod_ideafix » 17 Jul 2012 21:22

dancresp escribió:Conclusiones:

- La bestia negra de los 8 bits es sin lugar a dudas el BBC MICRO.


Yo aquí tengo mis reparos: tus pruebas se han basado en programas en BASIC (que como benchmarks válidos pueden ser discutibles), así que la conclusión válida sería que la bestia negra de los BASIC de 8 bits es el del Micro BBC. Extrapolar de la velocidad del BASIC la potencia del micro es un poco arriesgado. Fíjate si no en el BASIC del Amiga... cosa más lenta no he visto nunca, y nadie jamás diría que por ello el Amiga no es potente.
Cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista.

Avatar de Usuario
ron
Mensajes: 18951
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 2030 veces
Agradecimiento recibido: 1745 veces

Re: Y el equipo con el BASIC más rápido es... (1ª parte)

Mensajepor ron » 17 Jul 2012 22:16

Con la venia.

Aprovecho el post para aportar algunos datos, por pocos que sean espero que sirvan.

Código: Seleccionar todo

10 LET W=500:DIM F(W):LET P=1:LET A=3
20 LET F(P)=A:LET P=P+1:IF P>W THEN STOP
30 LET A=A+2:LET X=1
40 LET S=A/F(X):IF S=INT(S) THEN 30
50 LET X=X+1:IF X

60 GOTO 20



El tiempo está expresado en segundos.

Código: Seleccionar todo

Equipo               CPU             Tiempo
------               ---             ------
PCW8256 con Mallard  4.0Mhz Z80       58
BBC Micro B          2.0MHz 6502      101
ZX +3 Mallard        3.55MHz Z80A     115
Apple IIe (Int)      1.02MHz 65C02    134
Acorn Electron       2.0MHz 6502      138
Amstrad CPC464       4.0MHz Z80A      140
Commodore 128        2.0MHz           152
VIC-20               1.0MHz 6502      234
Commodore C64        1.0MHz 6510      254
Sony MSX2+           3.57MHz Z80A     260
Commodore Plus/4     1.0 MHz 8501     267
Tandy 64K CoCo 2     0.895MHz 6809E   271
Atari 800XL          1.8MHz 6502      316
Commodore 128        1.0MHz           319
Atari 130XE          1.78MHz 6502C    338
ZX Spectrum +3       3.55MHz Z80A     388


Como decía floppysoftware los CP/M con Mallard van como tiros.


y más datos que seguro os gustan, con el mismo programa.

Para Integer BASIC time, cambiar 'STOP' en linea 20 a 'END' y línea 40 a:
40 LET S=A MOD F(X):IF S=0 THEN 30




Avatar de Usuario
ron
Mensajes: 18951
Registrado: 28 Oct 2010 14:20
Ubicación: retrocrypta
Agradecido : 2030 veces
Agradecimiento recibido: 1745 veces

Re: Y el equipo con el BASIC más rápido es... (1ª parte)

Mensajepor ron » 17 Jul 2012 22:25

Antes que se me olvide, echad un ojo a:

http://cpcwiki.eu/index.php/BASIC_Benchmark


Sistema Media

Código: Seleccionar todo

BBC                  14.3
Amstrad CPC        14.5
IBM PC            17.6
Acorn Atom        22.8
VIC-20          28.7
Apple II        30.4
Dragon 32        36.2
Oric Atmos        44.1
SVI-328            46.7
ZX81 (fast)        51.2
Microtan65        56.5
ZX Spectrum        58.5
Oric-1            59.6
Atari 600XL        73.1
TI-99/4A        76.6

Avatar de Usuario
FloppySoftware
Mensajes: 224
Registrado: 21 Oct 2016 15:10
Agradecido : 36 veces
Agradecimiento recibido: 41 veces
Contactar:

Re: Y el equipo con el BASIC más rápido es... (1ª parte)

Mensajepor FloppySoftware » 17 Jul 2012 23:07

Muchas gracias, Ron!

Si es que el PCW... es mucho PCW.
Developing software since 1987 - http://www.floppysoftware.es

dancresp
Mensajes: 5629
Registrado: 13 Nov 2010 02:08
Agradecido : 311 veces
Agradecimiento recibido: 446 veces

Re: Y el equipo con el BASIC más rápido es... (1ª parte)

Mensajepor dancresp » 18 Jul 2012 00:20

mcleod_ideafix escribió:Yo aquí tengo mis reparos: tus pruebas se han basado en programas en BASIC (que como benchmarks válidos pueden ser discutibles), así que la conclusión válida sería que la bestia negra de los BASIC de 8 bits es el del Micro BBC. Extrapolar de la velocidad del BASIC la potencia del micro es un poco arriesgado. Fíjate si no en el BASIC del Amiga... cosa más lenta no he visto nunca, y nadie jamás diría que por ello el Amiga no es potente.

Hombre, ni esto es el benchmark definitivo, ni pretende serlo, ni cuestiona para nada el ordenador en si.

En resumidas cuentas, esto es un experimento de una noche de verano (bueno, ya dos) donde se me ocurrió programar un par de sencillísimos programas para probarlos en una serie de equipos distintos, cronómetro en mano.

Evidentemente hay equipos que pueden flojear en el acceso a pantalla pero despues ser muy rápidos en otras cosas, con lo que solo una prueba a fondo que testee múltiples parámetros nos darán la respuesta definitiva.

De todas formas, no hay duda que con estos simples programas ya aparecen unos resultados que no desentonan mucho con lo que ha aportado ron.

También hay que tener en cuenta que yo no tengo todos los equipos, y me gustaría saber, por ejemplo, que resultado da un SAM COUPE, ya que su BASIC no está nada mal por lo que tengo entendido.

Esta segunda noche he probado 8 equipos más y sus resultados aparecerán en el primer post. Como truño destacado, el TEXAS INSTRUMENTS TI-99/4A, el resto son del montón, porque parece que al BBC MICRO no lo sacas del primer puesto ni con agua caliente...

Sea como sea, me alegro de haber captado vuestra atención con este hilo, ya que realmente quien más quien menos tiene la duda de que ordenadores son los más rápidos.

Y ni que decir que podemos publicar y probar todos los ejemplos que queráis, para mejorar los resultados.

La verdad es que es una experiencia bastante interesante el desembalar, montar, conectar, programar, ejecutar, cronometrar, repetirlo varias veces, desconectar y guardar 19 equipos en menos de 4 horas. Y esto, recordando como funcionan ciertas características de cada equipo, consultando su manual en caso de duda. Os lo recomiendo.

Un saludo a todos, y mañana alguno más de 16 bits y los chiquitines de la casa.
Buscando la IP de la W.O.P.R. he encontrado mi índice

dancresp
Mensajes: 5629
Registrado: 13 Nov 2010 02:08
Agradecido : 311 veces
Agradecimiento recibido: 446 veces

Re: Y el equipo con el BASIC más rápido es... (1ª parte)

Mensajepor dancresp » 18 Jul 2012 00:32

Bueno, en el primer post he incorporado los resultados de los siguientes ordenadores:

- AMSTRAD PCW-8256 (BASIC Mallart-80)
- THOMSON TO8
- ACORN ELECTRON
- TRIUMPH-ADLER ALPHATRONIC PC
- TEXAS INSTRUMENTS TI-99/4A
- SINCLAIR QL
- COMMODORE 128
- COMMODORE 64

He incorporado una prueba más. La que indicaba mcleod y que imprime 512 "X", una a continuación de la otra. Ideal para los equipos que no tienen el LOCATE o similar. Aunque ahora mismo solo la he usado con estos últimos ordenadores.

Mañana publicaré los resultados en el primer post para que quede todo bien recogido.

Un saludo
Buscando la IP de la W.O.P.R. he encontrado mi índice


Volver a “Lenguajes de Programación y herramientas Dev”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado