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 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:

Genérico para todas las Casio y Sharp:
--------------------------
10 N=10
20 L=10
30 X=L
40 X=X+1
50 X=X-4.567E-4
60 X=X+70
70 X=X-69
80 X=X*7
90 X=X/11
100 L=L-1
110 IF L<>0 THEN 30
120 X=LOG(X)
130 X=SIN(X)
140 X=SQR(X)
150 X=SQR(X)
160 N=N-1
170 IF N<>0 THEN 20
180 PRINT X
190 BEEP: BEEP

Eliminar línea 190 para calculadoras sin BEEP.
Para Casio FX-702P y FX-801P cambiar PRINT por PRT.
Para PSION II CM, XP, XP/LA, LZ, LZ64:
--------------------------
PROC INDIRTO:
LOCAL N%,L%,X
N%=30
DOS::
L%=10
UNO::
X=L%
X=X+1
X=X-4.567E-4
X=X+70
X=X-69
X=X*7
X=X/11
L%=L%-1
IF L%<>0
GOTO UNO::
ENDIF
X=LN(X)
X=SIN(X)
X=SQR(X)
X=SQR(X)
N%=N%-1
IF N%<>0
GOTO DOS::
ENDIF
PRINT X :BEEP 500,100 :GET
ENDP
Para todas las PSION 3 y 5:
(aprovechamos que nos puede calcular incluso el índice gracias al reloj incorporado, sin interferir en los cálculos)
--------------------------
PROC INDIRTO:
LOCAL N%,L%,X,T1&,T2&
FONT 12,0
T1&=DATETOSECS(YEAR,MONTH,DAY,HOUR,MINUTE,SECOND)
N%=100
DOS::
L%=10 UNO:: X=L% X=X+1 X=X-4.56E-4 X=X+70 X=X-69 X=X*7 X=X/11 L%=L%-1 IF L%<>0 GOTO UNO ENDIF X=LN(X) X=SIN(X) X=SQR(X) X=SQR(X) N%=N%-1 IF N%<>0 GOTO DOS ENDIF T2&=DATETOSECS(YEAR,MONTH,DAY,HOUR,MINUTE,SECOND) PRINT X BEEP 5,300 PRINT "Tiempo empleado:";T2&-T1&;" segundos" PRINT "Primer indice:";34*100/(T2&-T1&) PRINT "Segundo indice:";34*100/(T2&-T1&)*97/34 GET ENDP

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.
A modo de ejemplo, se muestran los siguientes programas:

Para PB-80, 100, 110, etc:
--------------------------
10 A=1
20 PRINT CSR 0;A;
30 A=A+1
40 IF A<10001 THEN 20

En Calculadoras con BEEP (PB-110), añadir una línea 50 BEEP:BEEP para que avise al acabar y medir tiempo.
Casio FX-702P y FX-801P cambiar línea 20 por "20 PRT CSR 0;A;"
Para FX-850P, 880, VX-4, etc:
--------------------------
10 CLS: A=1
20 LOCATE 0,0:PRINT A;
30 A=A+1
40 IF A<10001 THEN 20
50 BEEP:BEEP
Para PSION II CM, XP, XP/LA, LZ, LZ64:
--------------------------
LOCAL A%
A%=1
UNO::
AT 1,1: PRINT A%
A%=A%+1
IF A%<10001
GOTO UNO::
ENDIF
BEEP 500,100
Para las Sharp:
--------------------------
10 WAIT 0: CLS: A=1
20 PRINT A
30 A=A+1
40 IF A<10001 THEN 20

En la PC-1500 se puede añadir:
50 BEEP 5,50
ASM para Sharp PC-G850V:
--------------------------
10 ORG 100H
11 LD HL,1
15 LD (NUMERO),HL
20INI: LD HL,(NUMERO)
30 LD DE,PP
40 CALL NM2DEC
50 LD B,5
60 LD DE,0101H
70 LD HL,PP
80 CALL 0BFF1H
90 LD DE,(NUMERO)
100 INC DE
105 LD(NUMERO),DE
110 LD HL,10000
120 SBC HL,DE
280 JP NZ, INI
290 RET
300PP:DB 0,0,0,0,0
310NUMERO:DW 0001H
-------------
1000NM2DEC: LD BC,-10000
1010 CAL NUM1
1015 LD BC,-1000
1018 CALL NUM1
1020 LD BC,-100
1030 CALL NUM1
1040 LD C,-10
1050 CALL NUM1
1060 LD C,B
1070NUM1: LD A,-1
1080NUM2: INC A
1090 ADD HL,BC
1100 JR C, NUM2
1120 SBC HL,BC
1125 ADD A,48
1130 LD (DE),A
1140 INC DE
1150 RET

                                          
Produciendo un programa así:





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:

Para PB-80, 100, 110, etc:
--------------------------
10 A=0:B=1:N=1
15 PRINT
20 PRINT CSR A;"\DI";
25 PRINT CSR 11-A;"\#";
30 A=A+B
35 IF A=11 THEN B=-B
36 IF A=0 THEN B=-B:N=N+1
40 IF N<11 THEN 15

En PB-110 se puede añadir una línea 50 BEEP:BEEP para que avise al acabar y podamos medir el tiempo.
Para Series FX-850P, VX-4, etc:
--------------------------
10 A=0:B=1:N=1
15 CLS
20 LOCATE A,0:PRINT CHR$(234);
25 LOCATE 11-A,0:PRINT CHR$(135);
30 A=A+B
35 IF A=11 THEN B=-B
36 IF A=0 THEN B=-B:N=N+1
40 IF N<11 THEN 15
50 BEEP:BEEP
Para PSION II:
--------------------------
LOCAL A%,B%,N%
A%=1 :B%=1 :N%=1
DO
CLS
AT A%,1
PRINT CHR$(250)
AT 13-A%,1
PRINT CHR$(255)
PAUSE 2
A%=A%+B%
IF A%=12
B%=-B%
ENDIF
IF A%=1
B%=-B%
N%=N%+1
ENDIF
UNTIL N%=101
BEEP 500,100 :GET
Produciendo un programa así: