Re: [eigen] Qt's container support

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]


On Tue, Jan 20, 2009 at 8:03 AM, Benoit Jacob <jacob.benoit.1@xxxxxxxxx> wrote:
> 2009/1/20 Keir Mierle <mierle@xxxxxxxxx>:
>> What is wrong with (a)? I'd like to have this anyway.
>
> In my understanding the main problem with (a) was that it would
> require operator= to start with an if() to check if the matrix is
> already initialized (so runtime overhead).
>
> Perhaps this argument isn't convincing: dynamic-size matrices involve
> runtime branching anyway eveytime you have to loop over their
> coefficients, so this if() is going to be negligible.

Exactly. Also, I believe that in some cases GCC can prove that a
matrix is uninitialized even for dynamic sized matrices and skip the
if, provided operator= is inlined. This will require some
investigation, but my understanding is that the scalar promotion of
aggregates optimization phase will expose this (scalar promotion of
aggregates breaks structures up into individual basic types, exposing
many optimization opportunities).

> It's true that this aspect of our API is one of the things that's
> causing the most trouble to users. I'm open to reconsidering it. But
> first: is there another reason for the current behavior that i
> forgot...?
>
> Benoit
>
>
>



Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/