Fortran 90 Compiler Correctness and Performance Evaluation

There are a number of common criticisms about Fortran 90 which have been voiced:
  1. Compilers are buggier than Fortran 77 compilers.
  2. They are slower than Fortran 77. (One comment was that Fortran 90 finally made codes run as slow as C++!)
  3. There is not much there that's useful except for dynamic memory allocation and array syntax.
  4. They are much more expensive ($1000 compared to $100) than Fortran 77.
This page will examine whether these criticisms are justified. Also see performance comparisons with abstract data types.

Are Fortran 90 Compilers Buggy? (Nowadays, most are very good, with relatively few bugs)

The Most Bug-Free Compiler Award!
The FUJITSU compiler, The IBM compiler, The Lahey LF95 compiler, and The Absoft (Mac/Linux) compiler

Object-Oriented style programs in Fortran 90 are new and different. They exercise the compilers in new and unusual ways and are therefore good tests of the their correctness. Out of 40 example codes, we have selected 13 of them as benchmarks because they exposed compiler weaknesses.

Regarding High Performance Fortran (HPF)

The IBM and The Portland Group HPF compilers have been evaluated against the benchmarks below. These compilers currently only have limited support for pointers, therefore our OOF90 benchmark examples will not generally run under HPF.

We would be happy to work with the vendors so that they may ALL get the award.

Please note that some compilers have not been re-evaluated in some time.

Results of 13 Object-Oriented Fortran Benchmarks
Platform Unix-Based Machines Macintosh/PC Machines
Compiler IBM Cray T3E DEC Sun Fujitsu SGI HP Absoft Mac Absoft NT Absoft (Linux) Lahey LF95 NAG F90 (Linux) DEC Visual NT
Version 4.1 V5.1-594 1.0.1 2.0.3 (patch) 7.2 2.0 2.1 1.01 1.01 (beta) 5.0 2.2 (260) 6.5
Error Summary 0 2* 2* 7* 0 3* 2 0 2 0 0 1 1
Graham2.f90 DNC DNC DNC DNC
Graham6.f90 IR IR IR
Lippman12.f90 IR
Lippman17.f90 DNC IR CD
Lippman19.f90 * * * *
Lippman20.f90 DNC DNC DNC
Lippman21.f90 DNC DNC
ExpressBC.f IR IR IR
ExpressD.f IR
Controller1.f * *
Controller3.f * *
Controller5.f * *
Key: DNC=Did Not Compile, CD=Core Dump, IR=Incorrect Results
* Compiler and code are both standard conforming, but code does not work
(Due to short record length on standard out)