Copyright (C) 2000-2012 |
GNU Info (g77-300.info)Program SpeedProgram Speed ------------- `g77' has the potential to better optimize code than `f2c', even when `gcc' is used to compile the output of `f2c', because `f2c' must necessarily translate Fortran into a somewhat lower-level language (C) that cannot preserve all the information that is potentially useful for optimization, while `g77' can gather, preserve, and transmit that information directly to the GBE. For example, `g77' implements `ASSIGN' and assigned `GOTO' using direct assignment of pointers to labels and direct jumps to labels, whereas `f2c' maps the assigned labels to integer values and then uses a C `switch' statement to encode the assigned `GOTO' statements. However, as is typical, theory and reality don't quite match, at least not in all cases, so it is still the case that `f2c' plus `gcc' can generate code that is faster than `g77'. Version 0.5.18 of `g77' offered default settings and options, via patches to the `gcc' back end, that allow for better program speed, though some of these improvements also affected the performance of programs translated by `f2c' and then compiled by `g77''s version of `gcc'. Version 0.5.20 of `g77' offers further performance improvements, at least one of which (alias analysis) is not generally applicable to `f2c' (though `f2c' could presumably be changed to also take advantage of this new capability of the `gcc' back end, assuming this is made available in an upcoming release of `gcc'). automatically generated by info2www version 1.2.2.9 |