From: David Abrahams (dave_at_[hidden])
Date: 2003-12-12 10:23:58
Phil Richards <news_at_[hidden]> writes:
> On 2003-12-12, David Abrahams <dave_at_[hidden]> wrote:
> [in reply to me saying:]
>> > The one worry I still have with the MPL approach when combined
>> > with the dimension-tagging approach you've taken is the compile-time
>> > performance - in its current form it is, frankly, unusable.
>> Did you try using mpl::vector instead of mpl::list?
> The problem isn't with mpl::list vs mpl::vector, I think.
If you're trying to use a fixed set of dimensions, mpl::vector can be
a *lot* more efficient than mpl::set, especially on implementations
with typeof() support.
> The problem is using a sequence type to do set operations -
> which is basically what Matthias does with his tagged
> rationals. I suspect most of his algorithms drop into
> O(n^2) (or worse) at compile time.
> The MPL list/vector is (probably) going to be fine for the fixed
> size dimensional analysis version but there is a bit of a
> learning curve involved... and I would have most likely used it
> if I could have got it to work. I just didn't have the patience,
> I'm afraid. (And I suspect it would be not much difference
> in compile-time performance to my current implementation.)
There is a set implementation in CVS; at least enough of one to get
some work done. See libs/mpl/test/set.cpp for usage.
-- Dave Abrahams Boost Consulting www.boost-consulting.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk