Reproduced here with the permission of the editors. Minor revisions made on March 7,1997 to the vertical graph labels and corresponding figure descriptions to make the performance information easier to understand. Progress in programming techniques and compilers is shrinking the performance penalty. In some cases there is no longer a penalty. These codes consumed CPU-months on supercomputers, thus performance was paramount.
C programs tend to emphasize computations on scalars.
Thus implementors of C have focused on optimizing scalar computations. For instance, allocating a variable in a machine register is often preferable to allocating it in memory, because accesses to registers are quicker. All modern compilers try to allocate scalar variables to registers when profitable. However, many C compilers refuse to store non-scalar variables in registers. Although it would be technically possible for the compiler to do this, few existing C programs would benefit.