Subject: Re: [boost] lifetime of ranges vs. iterators
From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2008-09-03 23:29:47


AMDG

David Abrahams wrote:
> I think the optimizer can remove some redundant tests if the functions
> are inlined. But, that said, I am becoming more and more convinced as
> this discussion goes on that compressing stacked iterator adaptors is
> barking up the wrong tree if you care about efficiency. The difference
> between the code generated in the abstracted case and the code you'd
> write by hand is simply too great.
>
> No, I don't have a picture of a better solution yet. But it's an
> interesting problem.
>

Here are some measurements for my current version of filter_iterator

In brief:

4 function objects containing two integers each: 3.39 seconds
4 stateless function objects: 2.813 seconds
4 stateless function objects combined using phoenix's && rather than
stacked iterators: 2.563 seconds
1 stateless function object 2.015 seconds
raw for loop using vector iterators 2.516 seconds
raw for loop using pointers: 1.703 seconds

These were all doing the same calculation over the same underlying vector.

In Christ,
Steven Watanabe