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. Perhaps the most striking demonstration of poor optimization occurs when numerical programmers introduce classes for complex numbers. Since there is little implicit in C programs, C programmers tend to be conscious of their use of pointers. Often, C programmers optimize code manually by loading frequently used pointers into temporary variables.