PHC is written in Ada. Since the gnu-ada compiler (also called GNAT [Ada Core Technologies]) is available for a large number of platforms, the software is portable. The myth that Ada is ``big and slow'' is disproved in [Syiek 1995]: Ada versions even have a slight edge over their C counterparts.
Initially, the VADS (Verdix Ada Development System) compiler was used on three different machine architectures. The implementation started [Verschelde 1990] on a SUN3/280 and moved [Verschelde and Cools 1993a] to a DECStation 5240. A version for an IBM RS/6000 workstation was made available [Verschelde 1995]. Thirdly, SUN-SPARC machines were used [Verschelde and Cools 1996], along with the gnu-ada compiler version 3.03 in [Verschelde 1996].
Next a report is given on compiler experiences. Because runtime efficiency is crucial, compilation is done with full optimization and with a suppression of runtime checks. Table 2 contains experimental data comparing VADS 6.2.3b against gnu-ada 3.09.
compiler options | user time | sys time | total time | aux. files | executable |
VADS: -O -S | 40m 9s | 5m 8s | 45m 17s | 42.1 Mb | 4.0 Mb |
GNAT: -O3 -gnatp | 45m 46s | 2m 59s | 48m 47s | 4.1 Mb | 2.9 Mb |
In Table 3 the performance of the generated code is illustrated on one of the benchmark examples.
phc | 4c|root counts | 4c|start system | 4c||continuation | 4c|total time | ||||||||||||
VADS | 1m | 26s | 866ms | 24m | 20s | 589ms | 38m | 17s | 667ms | 1h | 4m | 42s | 129ms | |||
GNAT | 1m | 15s | 74ms | 15m | 49s | 391ms | 27m | 50s | 521ms | 45m | 21s | 434ms |
Although this comparison is by no means thorough, the gnu-ada compiler seems to be the winner, both in compiling and runtime efficiency. Currently, the gnu-ada compiler is maintained by a privately held company Ada Core Technologies (ACT), founded by the creators of the gnu-ada compiler. ACT is committed to provide publicly free releases of their compiler. The most recent public version is numbered 3.11p.
The fourth platform used to develop PHC is a Pentium PC running Linux. The mathematical kernel of PHC has been rewritten using concepts of Ada 95 to incorporate multi-precision facilities. The other major change in the new version is the availability of SAGBI [Verschelde 1998] and Pieri homotopies.