Reducing build time through precompilations for evolving large software

Large-scale legacy programs take long time to compile, thereby hampering productivity. This paper presents algorithms that reduce compilation time by analyzing syntactic dependencies in fine-grain program units, and by removing redundancies as well as false dependencies. These algorithms are combined with parallel compilation techniques (compiler farms, compiler caches), to further reduce build time. We demonstrate through experiments their effectiveness in achieving significant speedup for both fresh and incremental builds.

[1]  Laszlo A. Belady,et al.  A Study of Replacement Algorithms for Virtual-Storage Computer , 1966, IBM Syst. J..

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

[3]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[4]  Ken Kennedy,et al.  Automatic translation of FORTRAN programs to vector form , 1987, TOPL.

[5]  Stephen Travis Pope,et al.  A cookbook for using the model-view controller user interface paradigm in Smalltalk-80 , 1988 .

[6]  David Hemmendinger,et al.  A parallel `make' utility based on Linda's tuple-space , 1989, CSC '89.

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

[8]  Anoop Gupta,et al.  Tolerating Latency Through Software-Controlled Prefetching in Shared-Memory Multiprocessors , 1991, J. Parallel Distributed Comput..

[9]  Tamiya Onodera Reducing compilation time by a compilation server , 1993, Softw. Pract. Exp..

[10]  Hans van Vliet,et al.  Software engineering - principles and practice , 1993 .

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

[12]  Andy Litman,et al.  An implementation of precompiled headers , 1993, Softw. Pract. Exp..

[13]  Rolf Adams,et al.  The cost of selective recompilation and environment processing , 1994, TSEM.

[14]  J. Devaney Experience with Mpi: 'converting Pvmmake to Mpimake under Lam' and 'mpi and Parallel Genetic Programming' , 1995 .

[15]  Meir M. Lehman,et al.  Laws of Software Evolution Revisited , 1996, EWSPT.

[16]  John Stuart Lakos,et al.  Large-Scale C++ Software Design , 1996 .

[17]  R. Nigel Horspool,et al.  CCC: A Caching Compiler for C , 1997, Softw. Pract. Exp..

[18]  Michael A. Cusumano,et al.  How Microsoft builds software , 1997, CACM.

[19]  Richard C. Holt Structural manipulations of software architecture using Tarski relational algebra , 1998, Proceedings Fifth Working Conference on Reverse Engineering (Cat. No.98TB100261).

[20]  Djenana Campara,et al.  InSight-reverse engineer CASE tool , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[21]  Bruno Laguë,et al.  DATRIX Abstract Semantic Graph Reference Manual , 1999 .

[22]  Richard C. Holt,et al.  E/R schema for the Datrix C/C++/Java exchange format , 2000, Proceedings Seventh Working Conference on Reverse Engineering.

[23]  John L. Henning SPEC CPU2000: Measuring CPU Performance in the New Millennium , 2000, Computer.

[24]  Yijun Yu,et al.  Partitioning loops with variable dependence distances , 2000, Proceedings 2000 International Conference on Parallel Processing.

[25]  Tara Krishnaswamy,et al.  Automatic precompiled headers: speeding up C++ application build times , 2000, WIESS'00.

[26]  Kyle A. Gallivan,et al.  The gSOAP Toolkit for Web Services and Peer-to-Peer Computing Networks , 2002, 2nd IEEE/ACM International Symposium on Cluster Computing and the Grid (CCGRID'02).

[27]  Aart J. C. Bik,et al.  Inside the Intel compiler , 2003 .

[28]  Homayoun Dayani-Fard,et al.  Quality-based software release management , 2003 .

[29]  Periklis Andritsos,et al.  Software clustering based on information loss minimization , 2003, 10th Working Conference on Reverse Engineering, 2003. WCRE 2003. Proceedings..

[30]  Yijun Yu,et al.  Non-uniform dependences partitioned by recurrence chains , 2004 .

[31]  Kristof Beyls,et al.  Software Methods to Improve Data Locality and Cache Behavior , 2004 .

[32]  Yijun Yu,et al.  Improving the Build Architecture of Legacy C/C++ Software Systems , 2005, FASE.