An empirical study of the performance of the APL370 compiler

The performance of a compiler is usually measured in terms of the execution efficiency of compiled code and the speed of compilation. For an APL compiler, we are also concerned about its relative performance with respect to the interpreter: C/I, the ratio of the speed of compiled code over interpretation. We give performance data on 4 groups of examples of moderate size: i) scalar style code where an interpreter does poorly and the C/I ratio is very high, ii) good APL style code where interpreter still does poorly due to inherent iterativeness or recursion, and the C/I ratio is high, and iii) good APL style code where the interpreter is very efficient on large data, and the C/I ratio is low, and iv) some particular primitives. These examples include neural net simulation, machine simulation, network routing, signal processing and mathematical computations. The APL370 compiler not only speeds up applications of iterative nature, but also gives good performance to codes utilizing APL's strength such as boolean selection and boolean data manipulation.