Seguimos con Sieve tras el Sieve en Pascal, de nuevo, el mismo algoritmo, esta vez traducido a varios dialectos de BASIC, y luego compilado con ellos.

Como ocurriera con Pascal/Object Pascal, la poca portabilidad de BASIC entre plataformas y dialectos, ha sido necesario realizar pequeños ajustes en el código de uno y otro para poderlos compilar.

La opinión general, suele creer que BASIC es por definición un lenguaje lento, una idea que probablemente venga de cuando BASIC era mayoritariamente interpretado. No soy de ese parecer, ya que al tener un concepto de lenguaje de más bajo nivel que Pascal u otros, debería mostrarse muy competitivo. Hay que tener en cuenta también, que por el mal nombre de BASIC en estos últimos años, los esfuerzos con los que se puede contar para mejorarlo, son mucho menos que los de otros lenguajes más en boga como C++, Java, C# o el citado Pascal.

Todas las compilaciones se han hecho con el máximo nivel de optimización para velocidad en tiempo de compilación, y he descartado lenguajes como Visual Basic Script (VBS), JustBasic o Gambas que al ser interpretados, no iban a tener mucho que decir en esta prueba. Tampoco he invertido tiempo en el análisis de productos más o menos abandonados como RapidQ; ni en otros peculiares como DarkBasic o RealBasic.

Compilador Plataforma Tamaño ejecutable (bytes) Tiempo de ejecución (ms)
FreeBasic 0.21 x86 32.256 80.540
Hotbasic 6.3 x86 6.144 228.499
PowerBASIC Console Compiler 5.0 x86 15.872 43.368
PureBASIC 4.50 x64 7.168 99.714
QB64 0.91 x86 769.788 324.011
Visual Basic .NET 2010 x86 11.776 46.285
Visual Basic .NET 2010 x64 11.264 47.408

Encabeza la clasificación PowerBASIC, del que a pesar de no tener optimizador demasiado elaborado, obtiene una marca francamente buena, y que supera a la mayoría de compiladores de Pascal, y todo ello sin necesidad de aplicar alineaciones a mano.

Sorprendente Visual Basic .NET, que obtiene una meritoria segunda posición, con un rendimiento comparable a la media de Pascal compilado, y quedando muy cerca del líder, que no está nada mal, teniendo en cuenta que es bytecode. Como ya vimos con la versión en Javascript y en C, Sieve no es un algoritmo que saque partido de las arquitecturas de 64 bits, más bien le penaliza un poco.

A bastante distancia, casi el doble, queda FreeBasic, donde vemos la poca madurez del compilador cruzado x64.

Les sigue, el extraño PureBASIC, con un ejecutable resultante realmente compacto.

Continúa Hotbasic, del que dado su enfoque hacia el rendimiento, me esperaba unos valores mucho más atractivos. No obstante, ha generado el ejecutable más pequeño de toda la comparativa, solamente 6 Kb. venciendo en este sentido a todos los contendientes, no sólo de BASIC, sino también de Pascal y C.

Por último QB64, que no sólo genera el ejecutable más grande, sino también el que ofrece un rendimiento más lento (en varios órdenes de magnitud), lo cual no es de extrañar teniendo en cuenta cual es su objetivo.

Como de costumbre, tienes todos los fuentes y los binarios, disponibles para descargar aquí (54 Kb. en formato ZIP).