Boost logo

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