Can this build system speed up?

Our assembly is a slow dog. It uses nested gnu make files in linux. It creates three assemblies for three different purposes from the same source tree. It uses symbolic links to alternately point to each of the three parallel trees. We can do partial assemblies using make inside subdirectories, which saves time, but if our work covers several directories, we must build for at least one of three goals and take at least 45 minutes. Only subdirectory assembly can take "only" 5-10 minutes.

Do you know of any quick points to check to see if this can get caught up with this build system? For example, is there a faster alternative to symbolic links?

Addendum: I saw a document dealing with recursive makefiles. Does anyone know first-hand what the consequences will be for the Makefile system, which currently has many makefiles (about 800) and more than 4.5 million source lines of code? Currently, people like to create only their current subdirectory or process (built-in Linux target) using make in this directory.

I just found out that until recently, the assembly was twice as long (startled), after which the production engineer deployed ccache.

+3
source share
5 answers

Considerations for faster assembly:

, , I/O, I/O / . , ( ) , (.NET, Java, Ant, ..) , .

, ( ). , , , , , .

/ , , , . , make Ant, . , Python, , , .

, , ( , ). - . , , . , , ( , " " ).

, , . -, , "", JAR, DLL EXE. , , . -, , - , . , "" .

, - - , , . , : - , , .

+4

, . , .

, make - jam. , make -j n, n - + 1.

+4

, distcc. , make -j 2.

(.. -O2 -O3), , , #include.

+1

make , , "Recursive Make " , . :

, . , , . , ; Makefile .

( make .)

+1

We use icecream. Do not kill time while it is building, but speed up the assembly process. It is a distributed compilation environment that uses CPU overhead for all PCs in the office. Our setup is rather complicated, since we have a cross-compilation environment, but it can be much easier if you do not cross-compile. http://en.opensuse.org/Icecream

0
source

All Articles