The cost of selective recompilation and environment processing
- 2 January 1994
- journal article
- Published by Association for Computing Machinery (ACM) in ACM Transactions on Software Engineering and Methodology
- Vol. 3 (1) , 3-28
- https://doi.org/10.1145/174634.174637
Abstract
When a single software module in a large system is modified, a potentially large number of other modules may have to be recompiled. By reducing both the number of compilations and the amount of input processed by each compilation run, the turnaround time after changes can be reduced significantly.Potential time savings are measured in a medium-sized, industrial software project over a three-year period. The results indicate that a large number of compilations caused by traditional compilation unit dependencies may be redundant. On the available data, a mechanism that compares compiler output saves about 25 percent, smart recompilation saves 50 percent, and smartest recompilation may save up to 80 percent of compilation work.Furthermore, all compilation methods other than smartest recompilation process large amounts of unused environment data. In the project analyzed, the average environment symbols are actually used. Reading only the actually used symbols would reduce total compiler input by about 50 percent.Combining smart recompilation with a reduction in environment processing might double to triple perceived compilation speed and double linker speed, without sacrificing static type safety.Keywords
This publication has 17 references indexed in Scilit:
- Interprocedural optimizationACM Transactions on Programming Languages and Systems, 1993
- Separate compilation in CHIPSYACM SIGSOFT Software Engineering Notes, 1989
- A simple technique for automatic recompilation in modular programming languagesSoftware: Practice and Experience, 1989
- Software change dynamics or half of all Ada compilations are redundantPublished by Springer Nature ,1989
- Smarter recompilationACM Transactions on Programming Languages and Systems, 1988
- Smart recompilationACM Transactions on Programming Languages and Systems, 1986
- Separate compilation in a modula‐2 compilerSoftware: Practice and Experience, 1986
- Rcs — a system for version controlSoftware: Practice and Experience, 1985
- Avoiding trickle‐down recompilation in the Mary2 implementationSoftware: Practice and Experience, 1984
- Type checking, separate compilation and reusabilityACM SIGPLAN Notices, 1984