namespace / typing thrash ...

Lubos Lunak l.lunak at suse.cz
Mon Apr 16 09:23:07 PDT 2012


On Monday 16 of April 2012, Michael Meeks wrote:
> 	Oh - and finally (Lubos) I pushed an item to the ESC agenda to discuss
> whether we should be exposing tons of classes and their symbols in the
> product, just to make unit tests work :-)

 I assume this is about 69d46dd7a6adfffd71da055bb65108c80d27395f .

 My motivation for the change was limiting the size of the debug build, which 
is so huge that just writing and reading those .o files takes a noticeable 
time. It is made even worse by the fact that make+gbuild order build commands 
so that allmost all compiles go first and linking goes last, which means all 
those .o's get written, then the early .o's get evicted from caches (even on 
a 12G RAM machine), then linking starts, which first reads those early .o's 
again and evicts later .o's, which then get read again. Just this I/O shuffle 
is 20% of my full build time. So I now usually build with workdir/+solver/ in 
zram, where it fits, but it still costs me 6G RAM. But those huge unittests 
libs weren't a happy sight in general anyway (e.g. Petr has had already 
failed LO builds in the buildservice because of them being too large).

 And it's not exactly tons of symbols, and even before my change there were 
many symbols selectively made exported, so I assumed that the tests used to 
work this way already before and had gotten broken e.g. by the gbuild 
conversion. I don't think there's a perfect solution. Making the release 
build slower because of a debug build is kind of lame, but I don't think the 
number of symbols makes any noticeable difference. Including whole copies of 
sc/sd/sw libs directly into unittest libs could also make the size explode if 
we get more unittests. We could possibly build debug builds with visibility 
disabled and link, and build release builds with object inclusion, but I 
don't know if that is worth it.

-- 
 Lubos Lunak
 l.lunak at suse.cz


More information about the LibreOffice mailing list