|
Boost-Build : |
From: Vladimir Prus (ghost_at_[hidden])
Date: 2004-12-07 05:31:47
Summary
The 'errors.nearest-user-location' rule used for better diagnostic was slow
and is not reimplemented with bjam's help.
Details.
The above rule is used to find the nearest location in backtrace which
corresponds to the user code. This is needed to report warnings which are
clearly user errors. However, the rule was implemented by walking though
backtrace and regex matching module names against "Jamfile". This was very
slow.
The current solution is new builtins. One marks a module as "user module" and
another returns the nearest enclosing user location.
Performance.
The following are real and user running times before and after the change
(over 10 bjam runs). I've used example that Toon has sent.
Command is 'bjam -n -d0'
Real: min 6:14, max 6:40
User: min 6:36, max 6:94
Command is '/home/ghost/Work/boost/tools/build/jam_src/bin.linuxx86/bjam -n
-d0'
Real: min 4:40, max 4:66
User: min 4:51, max 5:24
Compatibility.
All V2 tests pass both with old and new version of bjam. Of course, new
version is needed to get performance improvement.
- Volodya
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