|
Boost : |
From: Joaquín Mª López Muñoz (joaquin_at_[hidden])
Date: 2005-10-26 03:27:16
While in the process of replacing iterator helpers from
<boost/operators.hpp>
in favor of boost::iterator_facade as my internal iterator generation
lib in
Boost.MultiIndex, I've discovered an unpleasant increase in compilation
times.
The attached program shows the problem. Compilation times when
using boost::iterator_facade are *way* higher than with good old
boost::bidirectional_iterator_helper (to test it yourself, just
comment/uncomment the line "#define USE_BOOST_ITERATOR"
in the program):
MSVC++ 6.0:
iterator_facade: ~7 sec.
bidirectional_iterator_helper: less than 1 sec.
GCC 3.2
iterator_facade: 4.9 sec.
bidirectional_iterator_helper: 2.5 sec.
My questions:
1. Maybe the test program is flawed and has some (unseen by me)
bias in favor of bidirectional_iterator_helper?
2. If not so, why is iterator_facade so very expensive? Is there
any way to alleviate the problem?
As it stands, I'm not so sure it's a good idea to adopt
boost::iterator_facade:
my local tests for Boost.MultiIndex show an overall increase in
compilation
time of around 25% :(
Thanks for your help,
Joaquín M López Muñoz
Telefónica, Investigación y Desarrollo
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk