Para realizar una comparación de rendimiento de los "Ordenadores Personales" BASIC, hemos establecido
tres pruebas. Estas pruebas deben ser sencillas, para poder ser ejecutadas en todos los modelos, y servir pues de
referencia. Lógicamente es sólo una referencia para ver la evolución del rendimiento a través del tiempo,
ya que no tendría ningún sentido comparar un modelo 1989, con uno de 1984, debido a la enorme evolución
de la tecnología en esos 5 años. Sí servirá, sin embargo, para comparar modelos de diferentes marcas, de un
mismo año. Las pruebas son:
Prueba 1 y 2. "Índice de Rendimiento de Calculadoras".
La primera es una prueba
estándar de Internet llamada "Índice de
rendimiento de calculadoras"
(Calculator Performance Index), cuya descripción original se puede
encontrar
aquí. Se utiliza este test, por
estar bastant difundido en Internet.
El programa de esta prueba desarrolla en el bucle interno 10x(1 asignación, 5 sumas y restas, 2 multiplicaciones y divisiones, y 1 comparación)=90 más 2 raíces cuadradas, un seno, un logaritmo, una resta, una asignación y una comparación en el bucle externo. En total, 97 operaciones. Las operaciones aritméticas adicionales necesarias para el control de bucles son desechadas.
El tiempo de ejecución T se mide, si es inferior a 5 segundos, se añade un ciclo total para incrementar la precisión de la medición. Esto será necesario en las calculadoras más veloces.
El programa de esta prueba desarrolla en el bucle interno 10x(1 asignación, 5 sumas y restas, 2 multiplicaciones y divisiones, y 1 comparación)=90 más 2 raíces cuadradas, un seno, un logaritmo, una resta, una asignación y una comparación en el bucle externo. En total, 97 operaciones. Las operaciones aritméticas adicionales necesarias para el control de bucles son desechadas.
El tiempo de ejecución T se mide, si es inferior a 5 segundos, se añade un ciclo total para incrementar la precisión de la medición. Esto será necesario en las calculadoras más veloces.
- El resultado final de los cálculos mostrados en pantalla debe ser 0.264577, si el sistema de grados es DEG y log() proporciona el logaritmo en base 10.
- Si log() es base e, el resultado será 0.325915.
- Si log() es base e y el sistema de grados es RAD, el resultado será 0.880982.
Si su programa no produce ninguno de estos resultados, revíselo.
El "Índice de Rendimiento" es la representación de "Operaciones por segundo", entendiendo operación por las 97 descritas anteriormente, siendo una mezcla de operaciones de dificultad muy variable (no es lo mismo una suma, que una raiz cuadrada, que un logaritmo), pero bastante representativa. Por último comentar que la primera vez que se desarrolló este test, su creador cometió el error de computar 34 operaciones en cada ciclo, en vez de las 97 reales descritas. Para solventar este error, reflejaremos el índice en dos columnas 1 y 2. Así si la columna 1 está marcada como 11,6 y la 2 como 33,3, significa que según la medición errónea original, la máquina medida ejecuta 11,6 operaciones por segundo, y que según la real, ejecuta 33,3. En la página original listada arriba se describe el error, pero se sigue mostrando el primer valor (en cualquier caso el 2º valor es el 1º x 97 / 34, corrigiéndose de esta manera el error).
Si un valor está antecedido de un asterísco, (ej. *11,6), es que la medición es propia, es decir, hemos cargado el programa y hemos medido su tiempo de ejecución con una calculadora nuestra.
Así, el índice sería:
Primer índice= (34 Operaciones x número de bucles N que pongamos en el programa) / (segundos que ha tardado en ejecutar el programa)
Segundo índice= (97 Operaciones x número de bucles N que pongamos en el programa) / (segundos que ha tardado en ejecutar el programa)
Ejémplo: Una Casio FX-730P tarda en ejecutar el programa con 10 bucles N=10, (29,13 segundos). El índice 1 será 11,6 y el 2 33,3. (En la página del creador del test, da 12, que coincide con nuestro primer índice 11,6; redondeado).
Intentaremos calcular el índice para cada uno de los lenguajes que proporcione la calculadora. Si dispone de BASIC y C, como por ejemplo la Casio VX-4 y la SHARP PC G850V, hallaremos un índice para BASIC y otro para C. Eso nos dará también una idea de la diferencia potencia que puede proporcionar cada lenguaje en la misma máquina.
El programa de índice de rendimiento es:
El "Índice de Rendimiento" es la representación de "Operaciones por segundo", entendiendo operación por las 97 descritas anteriormente, siendo una mezcla de operaciones de dificultad muy variable (no es lo mismo una suma, que una raiz cuadrada, que un logaritmo), pero bastante representativa. Por último comentar que la primera vez que se desarrolló este test, su creador cometió el error de computar 34 operaciones en cada ciclo, en vez de las 97 reales descritas. Para solventar este error, reflejaremos el índice en dos columnas 1 y 2. Así si la columna 1 está marcada como 11,6 y la 2 como 33,3, significa que según la medición errónea original, la máquina medida ejecuta 11,6 operaciones por segundo, y que según la real, ejecuta 33,3. En la página original listada arriba se describe el error, pero se sigue mostrando el primer valor (en cualquier caso el 2º valor es el 1º x 97 / 34, corrigiéndose de esta manera el error).
Si un valor está antecedido de un asterísco, (ej. *11,6), es que la medición es propia, es decir, hemos cargado el programa y hemos medido su tiempo de ejecución con una calculadora nuestra.
Así, el índice sería:
Primer índice= (34 Operaciones x número de bucles N que pongamos en el programa) / (segundos que ha tardado en ejecutar el programa)
Segundo índice= (97 Operaciones x número de bucles N que pongamos en el programa) / (segundos que ha tardado en ejecutar el programa)
Ejémplo: Una Casio FX-730P tarda en ejecutar el programa con 10 bucles N=10, (29,13 segundos). El índice 1 será 11,6 y el 2 33,3. (En la página del creador del test, da 12, que coincide con nuestro primer índice 11,6; redondeado).
Intentaremos calcular el índice para cada uno de los lenguajes que proporcione la calculadora. Si dispone de BASIC y C, como por ejemplo la Casio VX-4 y la SHARP PC G850V, hallaremos un índice para BASIC y otro para C. Eso nos dará también una idea de la diferencia potencia que puede proporcionar cada lenguaje en la misma máquina.
El programa de índice de rendimiento es:
Genérico para todas las Casio y Sharp: |
Para PSION II CM, XP, XP/LA, LZ, LZ64: |
Para todas las PSION 3 y 5: |
Prueba 3. Contador simple.
La segunda es una sencilla prueba que cuenta del 1 al
10.000, escribiendo el número en el mismo lugar. Normalmente en la parte izquierda de la pantalla en
las pantallas de una sóla línea, o arriba a la izquierda en las de más de una. El programa debe tener las siguientes características:
A modo de ejemplo, se muestran los siguientes programas:
Produciendo un programa así:
- Es indispensable que el conteo sea visible en pantalla, y en el mismo lugar.
- Se podrá utilizar cualquier método de programación dentro de un lenguaje. Obviamente se deberá anotar el más rápido. Los bucles FOR suelen ser más eficaces que los IF-GOTO; aunque hay máquinas que no disponen de FOR. Probar con DO-UNTIL, WHILE-WEND, etc. (Tuvimos que cambiar todos los índices de esta prueba de nuestras calculadoras Casio al comprobar la mayor eficacia de los bucles FOR).
- Reflejar en el resultado el lenguaje de programación. Evidentemente será más efica el código máquina, que el C que a su vez el BASIC. Es interesante reflejar todos los lenguajes, como referencia.
- Se podrá utilizar el tipo numérico más eficaz. Los números enteros (INT) son más rápidos de usar; aunque no todas las máquinas disponen de ellos, como por ejemplo las Casio, que sólo disponen de un tipo único de COMA FLOTANTE.
- Igualmente, en las máquinas que dispongan de diferentes tamaños de letra, utilizar el más eficaz.
- También es interesante anotar el resultado para diferentes tipos de BASIC en aquellas máquinas en las que se puedan ejecutar más de una versión. Por ejemplo, en las PSION 5 y REVO se puede ejecutar además de OPL, el sistema operativo MSDOS, donde se pueden hacer correr varias versiones de BASIC para ese SO. En la TI-83+ y TI-84+ se pueden ejecutar, además del TI BASIC, el BBC BASIC, o el compilador de BASIC AXE, entre otros.
- Aunque varias máquinas puedan ejecutar la misma versión de BASIC o OPL, conviene traducir o compilar el código fuente en cada una en la que se vaya a ejecutar el test, ya que normalmente un cóodigo compilado en otra versión suele ir más lento.No obstante, aquí queda a la libertad del analista, la anotación del resultado más eficaz.
A modo de ejemplo, se muestran los siguientes programas:
Para PB-80, 100, 110, etc: |
Para FX-850P, 880, VX-4, etc: |
Para PSION II CM, XP, XP/LA, LZ, LZ64: |
Genérico para las Sharp: |
ASM para Sharp PC-G850V: |
Prueba 4. Prueba de movimiento de caracteres gráfico.
La tercera es un programa que presenta inicialmente dos
caracteres gráficos a ambos lados de la pantalla, y se mueven de lado a lado de la pantalla cruzándose
300 veces.
A modo de ejemplo, se muestran los siguientes programas:
Produciendo un programa así:
A modo de ejemplo, se muestran los siguientes programas:
Para PB-80, 100, 110, etc: |
Para Series FX-850P, VX-4, etc: |
Para PSION II: |
Otros tests no desarrollados en esta página.
A continuación mostramos otros test considerados interesantes que aún no hemos desarrollado en este sitio. Estos test
no tienen por qué reflejar el rendimiento de la calculadora, pudiendo buscar a través de su ejecución datos o
características importantes de la máquina.
Test "Forense".
El sitio original está localizado aquí. Ésta es una prueba muy rápida, ya que simplemente consiste en realizar el siguiente cálculo ASN(ACS(ATN(TAN(COS(SIN(9)))))).
La prueba, según su creador, NO TRATA de valorar la precisión, sino de determinar a través de la comparación de resultados, si dos máquinas utilizan la misma tecnología. El resultado se emplea fundamentalmente cuando no se puede desmontar y despiezar las calculadoras para:
Test rápido de precisión.
Localizado en este foro, nos parece muy interesante, porque prueba de manera muy rápida la pérdida de precisión de una máquina.
Consiste en teclear 1.0000001 y elevar consecutivamente el resultado 27 veces al cuadrado.
O dicho de otra manera, realizar el siguiente cálculo: \((((((((((((((((((((((((((((1.0000001^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2 \).
El resultado, realizado en un PC con un programa de alta precisión al tratar decenas de decimales es: 674530.470741084559382689178029746812844444143410342031742377327839017761756835646924185036948314117161449392236580649 4878235789112137118508266884595666140433881253783364963877882316561013126246700504661941463053373499769954564238438193 0207370825089291776040311503057925709194662515090084795006371908000146482011431309349872840804148845498173359127903194 1696561625036530446399539623519795473743965573225426379607708298301765169283525997445575898149918290658...
Lo bueno de este test, es que una máquina para hacer los cálculos necesita ir redondeando en cada operación parcial, y dependiendo de la precisión de ese redondeo, que en este caso de produce 27 veces, dará un número más o menos cercano a lo que vamos a considerar como Valor Referencia: "674530.470741".
Si no tiene buena precisión, afectará incluso a los enteros. La Casio FX-9860GII (2009), que es una de las calculadoras más avanzadas del mercado, arroja un resultado de "674529.1121", por detrás del PSION Workabout MX, que 11 años antes daba un resultado muy cercano al Valor Referencia "674530.475521". Obsérvese también, como con la misma calculadora FX-9860GII con otra versión más potente de BASIC, la C.BASIC, el error es mucho menor, ya que para los números reales emplea una doble precisión que maneja números en el rango de \(±9.88131291682493 x 10^{-323} a ±1.7976931348623151 x 10^{-323}\). Curiosamente da el mismo resultado, y consecuentemente la misma preción que la PSION (¿sus BASIC fueron desarrollados con el mismo C?).
A continuación mostramos una tabla con máquinas significativas de diferentes fabricantes, con el año de salida al mercado para que pueda tenerse en cuenta la tecnología disponible en ese momento.
Test "Forense".
El sitio original está localizado aquí. Ésta es una prueba muy rápida, ya que simplemente consiste en realizar el siguiente cálculo ASN(ACS(ATN(TAN(COS(SIN(9)))))).
La prueba, según su creador, NO TRATA de valorar la precisión, sino de determinar a través de la comparación de resultados, si dos máquinas utilizan la misma tecnología. El resultado se emplea fundamentalmente cuando no se puede desmontar y despiezar las calculadoras para:
- Intuir si una máquina utiliza los mismos cirucuitos integrados que otra.
- Intuir si una máquina es copia de otra.
- Comprobar si un modelo posterior de una misma marca, sigue empleando los mismos circuitos, realizando simples mejoras de la ROM.
- Si una calculadora de una segunda marca no muy conocida, ha sido desarrollada por un primer fabricante.
Test rápido de precisión.
Localizado en este foro, nos parece muy interesante, porque prueba de manera muy rápida la pérdida de precisión de una máquina.
Consiste en teclear 1.0000001 y elevar consecutivamente el resultado 27 veces al cuadrado.
O dicho de otra manera, realizar el siguiente cálculo: \((((((((((((((((((((((((((((1.0000001^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2)^2 \).
El resultado, realizado en un PC con un programa de alta precisión al tratar decenas de decimales es: 674530.470741084559382689178029746812844444143410342031742377327839017761756835646924185036948314117161449392236580649 4878235789112137118508266884595666140433881253783364963877882316561013126246700504661941463053373499769954564238438193 0207370825089291776040311503057925709194662515090084795006371908000146482011431309349872840804148845498173359127903194 1696561625036530446399539623519795473743965573225426379607708298301765169283525997445575898149918290658...
Lo bueno de este test, es que una máquina para hacer los cálculos necesita ir redondeando en cada operación parcial, y dependiendo de la precisión de ese redondeo, que en este caso de produce 27 veces, dará un número más o menos cercano a lo que vamos a considerar como Valor Referencia: "674530.470741".
Si no tiene buena precisión, afectará incluso a los enteros. La Casio FX-9860GII (2009), que es una de las calculadoras más avanzadas del mercado, arroja un resultado de "674529.1121", por detrás del PSION Workabout MX, que 11 años antes daba un resultado muy cercano al Valor Referencia "674530.475521". Obsérvese también, como con la misma calculadora FX-9860GII con otra versión más potente de BASIC, la C.BASIC, el error es mucho menor, ya que para los números reales emplea una doble precisión que maneja números en el rango de \(±9.88131291682493 x 10^{-323} a ±1.7976931348623151 x 10^{-323}\). Curiosamente da el mismo resultado, y consecuentemente la misma preción que la PSION (¿sus BASIC fueron desarrollados con el mismo C?).
A continuación mostramos una tabla con máquinas significativas de diferentes fabricantes, con el año de salida al mercado para que pueda tenerse en cuenta la tecnología disponible en ese momento.
Máquina | Resultado | % error | Máquina | Resultado | % error |
---|---|---|---|---|---|
Casio FX-9860GII(2009) | 674529.1121 | \(2,01 x 10^{-4}\) | Casio FX-9860GII con C.BASIC | 674530.4755 | \(7,11 x 10^{-7}\) |
Sharp PC-G850V(2001) | 674494.0561 | \(5,32 x 10^{-3}\) | TI-83 plus(1999) | 674529.4131 | \(1,56 x 10^{-4}\) |
PSION Workabout MX(1998) | 674530.475521 | \(7,11 x 10^{-7}\) | Casio FX-3650P(2002) | 674513.013483 | \(2,58 x 10^{-3}\) |
Casio PB-100(1982) | 674494.0561 | \(5,32 x 10^{-3}\) | HP 39gs(2006) | 674514.86877 | \(2,31 x 10^{-3}\) |
Casio FC-200(1988) | 674470.0572 | \(8,95 x 10^{-3}\) | Psion Revo(1999) | 674530.475521 | \(7,11 x 10^{-7}\) |
TI-80(1995) | 674530.3180 | \(2,26 x 10^{-5}\) | TI-92(1996) | 674529.41305 | \(1,56 x 10^{-4}\) |
TI-82STATS(2004) | 674529.41305 | \(1,56 x 10^{-4}\) | Casio FX-4000P(1985) | 674494.0561 | \(5,32 x 10^{-3}\) |
TI-nSpire(2007) | 674529.41305 | \(1,56 x 10^{-4}\) | Sharp PC-1211(1980) | 674494.0561 | \(5,32 x 10^{-3}\) |
Amstrad NC100(1992) | 685090.596 | \(1,56\) | Tandy M-200(1984) | 674529.41305 | \(1,56 x 10^{-4}\) |
Casio PB-110(1983) | 674494.0561 | \(5,32 x 10^{-3}\) | Sharp PC-1500(1981) | 674494.0561 | \(5,32 x 10^{-3}\) |
Casio Classpad 300(2003) | 674529.1153 | \(2,00 x 10^{-4}\) | Sharp EL-9300(1992) | 674522.826 | \(1,13 x 10^{-3}\) |
Sharp EL-6450(1999) | 674523.3747 | \(1,05 x 10^{-3}\) | TI-84 Plus(2004) | 674529.41305068 | \(1,56 x 10^{-4}\) |
TI-83 Plus(1999) | 674529.41305068 | \(1,56 x 10^{-4}\) | TI-83 Premium CE(2017) | 674529.41305068 | \(1,56 x 10^{-4}\) |