[libstdc++ PATH] tr1::bind support
Douglas Gregor
doug.gregor@gmail.com
Wed Mar 23 12:56:00 GMT 2005
On Mar 23, 2005, at 6:58 AM, Steven Bosscher wrote:
> On Tuesday 22 March 2005 11:27, Chris Jefferson wrote:
>> Steven Bosscher wrote:
>>> Could you send me a preprocessed file for this? I want to know
>>> where all that time is going in a non-PCH compile (I have a few
>>> ideas, but I'd like to check them...).
>>
>> Heres a bzip2ed, preprocessed copy of
>> testsuite/tr1/6_containers/tuple/comparison_operators/comparisons.cc.
>> (for 4.1.0 20050315) Have fun ;)
>>
>
> Blech. Almost *all* compile time is sucked up in the C++ front end
> name look stuff (at any -On, here at -O0):
>
> Execution times (seconds)
> life analysis : 0.00 ( 0%) usr 0.00 ( 0%) sys 0.01 (
> 0%) wall
> preprocessing : 0.30 ( 4%) usr 0.20 (15%) sys 0.59 (
> 7%) wall
> parser : 1.61 (22%) usr 0.63 (46%) sys 2.41
> (27%) wall
> name lookup : 5.40 (73%) usr 0.50 (37%) sys 5.65
> (64%) wall
Ouch! I wonder if all of the time spent in comptypes is due to
quadratic behavior in finding & matching partial specializations, One
"minor" difference between the libstdc++ and Boost implementations of
bind and mem_fn is that libstdc++ uses a single class template (e.g.,
_Bind) with lots of partial specializations whereas Boost uses many
more class templates with the number of parameters attached (bind0,
bind1, bind2, ..., etc.). We could try going the Boost way to see if
that improves compile time.
(I just noticed that Steven reduced compile time by 40%. Great work!).
Doug
More information about the Libstdc++
mailing list