The cost of selective recompilation and environment processing

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.

[1]  Michael R. Levy Type checking, separate compilation and reusability , 1984, SIGPLAN '84.

[2]  Meir M. Lehman,et al.  Program evolution: processes of software change , 1985 .

[3]  Rolf Adams,et al.  Software Change Dynamics or Half of all Ada Compilations are Redundant , 1989, ESEC.

[4]  Yih-Farn Robin Chen,et al.  Incl: A Tool to Analyze Include Files , 1992, USENIX Summer.

[5]  Ragui Kamel,et al.  Effect of Modularity on System Evolution , 1987, IEEE Software.

[6]  David G. Foster Separate compilation in a modula‐2 compiler , 1986, Softw. Pract. Exp..

[7]  Peter H. Feiler,et al.  Evaluation of the Rational Environment , 1988 .

[8]  P. M. Cashin,et al.  Experience with a modular typed language: PROTEL , 1981, ICSE '81.

[9]  Manfred Dausmann Informationsstrukturen und Verfahren für die getrennte Übersetzung von Programmteilen , 1985 .

[10]  Graham Ross,et al.  Integral-C—a practical environment for C programming , 1987, SDE 2.

[11]  Walter F. Tichy,et al.  Smart recompilation , 1986, TOPL.

[12]  David B. Leblang,et al.  Parallel Software Configuration Management in a Network Environment , 1987, IEEE Software.

[13]  Gail E. Kaiser,et al.  Smarter recompilation , 1988, TOPL.

[14]  Henry Ledgard,et al.  Reference Manual for the ADA® Programming Language , 1983, Springer New York.

[15]  Stuart I. Feldman,et al.  Make — a program for maintaining computer programs , 1979, Softw. Pract. Exp..

[16]  James H. Morris,et al.  Program changes and the cost of selective recompilation , 1989 .

[17]  Walter F. Tichy Software development control based on module interconnection , 1979, ICSE 1979.

[18]  Juris Hartmanis,et al.  The Programming Language Ada Reference Manual American National Standards Institute, Inc. ANSI/MIL-STD-1815A-1983 , 1983, Lecture Notes in Computer Science.

[19]  Mark Rain,et al.  Avoiding trickle‐down recompilation in the Mary2 implementation , 1984, Softw. Pract. Exp..

[20]  Mark A. Linton,et al.  A Macroscopic Profile of Program Compilation and Linking , 1989, IEEE Trans. Software Eng..

[21]  Jürg Gutknecht Separate Compilation in Modula-2: An Approach to Efficient Symbol Files , 1986, IEEE Software.

[22]  Linda Torczon,et al.  Interprocedural optimization: eliminating unnecessary recompilation , 1986, SIGPLAN '86.

[23]  Ronald A. Olsson,et al.  A simple technique for automatic recompilation in modular programming languages , 1989, Softw. Pract. Exp..

[24]  Walter F. Tichy,et al.  Rcs — a system for version control , 1985, Softw. Pract. Exp..

[25]  H. Eidnes,et al.  Separate compilation in CHIPSY , 1989, SCM.

[26]  William J. Clancey,et al.  A Qualitative Modeling Shell for Process Diagnosis , 1986, IEEE Software.

[27]  Andrew W. Appel,et al.  Smartest recompilation , 1993, POPL '93.

[28]  Robert W. Schwanke,et al.  Configuration management in BiiN SMS , 1989, ICSE '89.