Para continuar con Sieve en C, haremos lo mismo, aunque esta vez, implementando el algoritmo en Pascal, y generándolo con diferentes compiladores.
Debido a la menor portabilidad de Pascal/Object Pascal entre plataformas y fabricantes, ha sido necesario realizar ajustes mínimos en cada uno de los programas para poderlos compilar. No obstante, se reducen a los aspectos dependientes de la plataforma, que en nuestro caso es solamente la medición de tiempos.
Por diseño del lenguaje, a priori, los compiladores de Pascal, van a generar un código algo peor que los de C, pero partiremos igualmente con las 50.000 iteraciones, para tener una comparación más directa.
Todas las compilaciones se han hecho con el máximo nivel de optimización para velocidad en tiempo de compilación.
Compilador | Plataforma | Tamaño ejecutable (bytes) | Tiempo de ejecución (ms) |
Delphi XE | x86 | 30.208 | 31.370 |
Free Pascal 2.4.0 | x86 | 62.587 | 53.589 |
Free Pascal 2.4.0 | x64 | 70.484 | 64.958 |
Virtual Pascal 2.1 | x86 | 19.456 | 81.773 |
Delphi lidera la comparativa, con unos resultados competitivos entorno a un 15% más lentos que C++ Builder, y un 40% más lentos que Visual C++, se nota la larga y exitosa trayectoria de Delphi, donde vence de goleada a todas las alternativas.
Free Pascal, queda en segunda posición, y como ya vimos con la versión en Javascript y en C, la versión x64 queda algo penalizada. Sieve no es un algoritmo que saque partido de las arquitecturas de 64 bits, más bien le penaliza un poco. Además la diferencia con Free Pascal es del orden de un 20%, que es achacable a la poca madurez del compilador cruzado de 64 bits.
En los resultados, se nota la antigüedad de Virtual Pascal (2004), hoy día abandonado, pero que en su día llegó a superar Turbo/Borland Pascal.
Os dejo los fuentes y los binarios, disponibles para descargar aquí (76 Kb. en formato ZIP).