Boost logo

Boost Users :

From: David Abrahams (dave_at_[hidden])
Date: 2004-08-03 06:56:12


Istvan Buki <istvan.buki_at_[hidden]> writes:

> Hello David,
>
> thanks for your clean and simple answer. I also thought about
> something similar to your answer but I was wondering if there exist
> some way to calculate that index at compile-time.

Yes there is.

> Looking at the
> assembly code generated, it doesn't make a big difference to my
> version where the index values are hard-coded but still... In fact,
> the question I'm really trying to answer is: what is the price to
> pay (in term of performance and space) for using an mpl based
> solution compared to have my array elements initialized by a totally
> hard-coded function? Up to now what I've found is that my executable
> is 10% larger and the code is about 4 times slower (again by looking
> at the assembly code generated).

Have you got all optimizations enabled with full inlining?
What compiler are you using?

> So, if you can think of a more efficient solution I'm still
> interested.

You could use

  mpl::zip_view<
      mpl::vector2<
          mpl::range_c<0, mpl::size<Descriptors>::value>
        , Descriptors
>
>

as the sequence in your for_each; then each element would contain a
compile-time index and a descriptor.

HTH,

-- 
Dave Abrahams
Boost Consulting
http://www.boost-consulting.com

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net