[LLVMdev] RFC: Upcoming Build System Changes

Wesley Peck peckw at wesleypeck.com
Tue Nov 1 21:40:15 PDT 2011


Just for informational purposes on a smaller system (Core 2 Duo MacBook Pro):

make	  none		X86.td		X86InstrInfo.cpp
real	  11.568 217%	76.283	177%	34.435	169%
user	  7.726	 141%	70.659	100%	25.608	116%
sys	  3.234  111%	3.992	100%	6.438	104%

make -j2  none		X86.td		X86InstrInfo.cpp
real	  7.7346 145%	43.138	100%	25.77	127%
user	  7.6072 139%	70.414	100%	26.589	121%
sys	  3.2492 111%	3.984	100%	6.671	107%

cmake	  none		X86.td		X86InstrInfo.cpp
real	  9.604	 180%	92.127	214%	30.874	152%
user	  5.751	 105%	84.993	121%	21.628	98%
sys	  3.053	 104%	3.998	100%	6.246	100%

cmake -j2  none		X86.td		X86InstrInfo.cpp
real	   5.321 100%	46.723	108%	20.324	100%
user	   5.481 100%	85.392	121%	21.995	100%
sys	   2.924 100%	3.833	96%	6.217	100%

The numbers are in seconds and are an average of five runs. The file names indicate the file that was modified (via touch) to cause the rebuild. The change of the file X86.td cause tablegen to run but no source file compilation and no executable or library linking. The change of X86InstrInfo.cpp caused several files to be recompiled and many executables and libraries to be relinked.

One thing that I noticed (not in this table) was that tablegen is about 300% faster on my machine when building a Release build vs. a Debug build, lowering the build time for the X86.td rebuild from 46 seconds to 15 seconds. This obviously adds up quickly when there are more tablegen files being regenerated.

Perhaps tablegen should always be compiled with optimizations even in Debug Mode? I assume the need to debug tablegen itself is relatively rare.

--
Wesley Peck
University of Kansas
SLDG Laboratory





More information about the llvm-dev mailing list