Sieve en BASIC

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).

5 comentarios en “Sieve en BASIC”

  1. I’ve been reading and enjoying several articles on your site thanks to bing translator. I think the article «Visual Basic .NET no es Basic» might need some updating. Based on your points 1 through 4, I believe they all hold true for VB.net as well. None may be recommended today, but they are available, see the following working vb.net program.

    Option Explicit On

    Module Module1
    Sub Main()
    10: Dim x%, y
    20: x = 0
    30: Console.WriteLine(«test » & x)
    40: x += 1
    50: If x < 5 Then GoTo 30
    60: y = 15
    70: Console.WriteLine(y)
    80: y = "test"
    90: Console.WriteLine(y)
    100: Console.ReadLine()
    End Sub
    End Module

  2. Javier Gutiérrez Chamorro (Guti)

    Thanks for the point Larry, and of course thanks for reading.

    I was not aware VB.NET still supported line numbers, so it was my fault not considering that in Visual Basic .NET no es Basic.

    Is the code you posted still working on latest VB 2010 version?

  3. Hola javier. Que tal????. Te comento que yo usaba mucho el vb6. Hice bastantes cosas con el, puedes verlo en mi web (aunque ahora el servidor, lleva un par de dias caido por mantenimiento) . Ahora estoy desarrollando una alternativa a Visual Basic 6 con FreeBasic, probé varios compiladores de basic, y fue el que mas me gustó, (velocidad de ejecucion, el tamaño de los Exes es pequeño, se puede programar codigo ASM, y sobre todo la cantidad de info y ejemplos que hay por internet ), aun me queda mucho trabajo porque el proyecto no es facil, pero bueno poco a poco. Te escribo porque veo que hablas español. De donde eres????, yo de Mallorca (España). Saludos y suerte!!!!

  4. Javier Gutiérrez Chamorro (Guti)

    Bienvenido Tolo. Un saludo a Mallorca. Yo soy de Barcelona.

    Crear una herramienta de desarrollo nunca es sencillo ni corto, más aún si quieres replicar VB6. En todo caso es un proyecto meritorio. Tengo ganas de verlo, porque justamente acabé de acceder, y daba que estaba caído.

    Personalmente FreeBasic no me gusta demasiado, será porque soy entusiasta de PowerBasic, y bueno, si FB te parece compacto y rápido, mira PB!

Deja un comentario