From: Rene Rivera (grafik.list_at_[hidden])
Date: 2004-04-28 12:21:30
Toon Knapen wrote:
> (I'm sorry, I know this has been discussed before but have found no link
> to an explanation on how to use it).
> I guess bjam first generates the whole dependency tree (parsing all
> includes and following them) and then verifies the 'last change date' of
> all nodes in this tree.
> Now bjam takes quite some time before issueing its first compile or link
> command so I figured: is there anyway to skip the recreation of the
> dependency tree ?
Yes it takes a long time. And yes there is a way to cache the dependency
> Basically this comes down to equivalent of doing 'make' without first
> running 'make depend'.
Good news is that bjam should already be doing this for you. Look for a
file ".jamdeps", that holds a cache of all the depency scanning.
The bad news is that the slow startup has nothing to do with dependency
scanning. But has everything to do with parsing and generating the
actual target descriptions. It's a know problem for which we don't have
a real solution. Bjam spends much time building many strings, as all the
work it does is based on string and lists of strings. Boost.Build uses
*many* strings and does *many* operations on them. Which results in a
large memory use because bjam considers strings read-only, and doesn't
ever collect unused strings (for various C reasons).
And we don't currently have a way to improve the situation. Ideas are
-- -- Grafik - Don't Assume Anything -- Redshift Software, Inc. - http://redshift-software.com -- rrivera/acm.org - grafik/redshift-software.com - 102708583/icq
Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk