Ante todo debo felicitar a Bruno por el esfuerzo en tirar adelante con C3, después de tanto tiempo inactivo.
No tocaba Clipper desde los tiempos de DOS, incluso llegué a probar una RC del difunto dc3.exe.
El caso es que viendo que el proyecto se retomaba, he decidido echarle un vistazo, esta vez sobre Windows.
Me ha llamado poderosamente la atención lo ágiles que son los ejemplo, y lo fluida que se ve la GUI. Además el tamaño resultante de los ejecutables es tremendamente compacto. Algo totalmente opuesto a los tiempos de Clipper.
Animado por ello, decidí portar el Sieve de Eratóstenes que tenía escrito en otros lenguajes a C3.
Los resultados han sido bastante pobres, del orden de 50 veces más lento que Javascript. Soy consciente que el fuerte de xBase no han sido nunca los cálculos intensivos de CPU, pero no esperaba ese rendimiento tan pobre.
Estoy bastante oxidado en xBase, así que es posible que haya cometido algún tipo de error de codificación. Os dejo a continuación el código fuente por si lo encontráis, o tenéis alguna explicación al respecto:
Código:
#define MAXITER 10000
procedure main
local i, k
local found, iter
local flags[MAXITER]
local start, finish
? str(MAXITER) + " iterations"
start := seconds()
for iter := 1 to MAXITER
found := 0
for i := 1 to MAXITER
flags[i] := 0
next i
for i := 2 to MAXITER
if flags[i] = 0 // found a prime
found++
for k := i+i to MAXITER step i
flags[k] := 1
next
endif
next
next
finish := seconds()
? str(found) + " primes in " + str((finish-start)*1) + " seconds "
return
Es chocante también que la compilación de 64 bits, haya resultado incluso algo más lenta que la de 32 bits.
Conociendo que Clipper, no deja de ser un p-code que se interpreta, se explicaría una gran parte de la diferencia de rendimiento.
Si tenéis curiosidad, aquí lo publiqué con otros lenguajes:
-
http://www.javiergutierrezchamorro.com/ ... izado/1489-
http://www.javiergutierrezchamorro.com/sieve-en-c/1482-
http://www.javiergutierrezchamorro.com/ ... ascal/1485-
http://www.javiergutierrezchamorro.com/ ... basic/1488-
http://www.javiergutierrezchamorro.com/ ... -java/1610Muchas gracias.