Slow performance compared to C++, ideas?

Rob T alanb at ucora.com
Tue Jun 4 09:21:12 PDT 2013


On Tuesday, 4 June 2013 at 05:58:30 UTC, Andrei Alexandrescu 
wrote:
> On 6/4/13 1:41 AM, Rob T wrote:
>> Structs would IMO be far more useful if they had inheritance.
>
> We do offer subtyping via alias this.
>
> Andrei

Yeah, I saw that method described in another thread. The 
technique is not even remotely obvious, but the major problem is 
that it's very limited. After you do one alias this, you can't 
use alias this again for other things. Maybe that'll eventually 
change, I don't know. It seems like a hack to me, I'd rather see 
real inheritance.

On Tuesday, 4 June 2013 at 05:58:58 UTC, Jonathan M Davis wrote:
> How would it even work for a struct to inherit without 
> polymorphism? The whole
> point of inheritance is to make it so that you can create types 
> that can be
> used in place of another,
....

The other significant reason for inheritance is to reuse 
pre-built sub-components. I rarely use polymorphism, but I make a 
lot of use out of inheritance, so what happens is that I end up 
creating classes when all I really need is structs. I cannot be 
the only person doing this either, and I suspect its very common.

> Use composition, and if you want to be able to call members of 
> the inner
> struct on the outer struct as if they were members of the outer 
> struct, then
> use alias this or opDispatch to forward them to the inner 
> struct.
>

For simulating inheritance, yes, you probably can make use out of 
inner structs, but how to make it all work seamlessly is not 
obvious and using opDispatch to make it stick together is time 
consuming and error prone.

On Tuesday, 4 June 2013 at 05:56:49 UTC, deadalnix wrote:
...
> struct are value type. You can't know the size of a polymorphic 
> type. So you'll have trouble sooner than you imagine.

That's not an issue if you cut out the polymorphism nonsense from 
the feature set, which means that for structs the size is always 
knowable. I see no reason why structs cannot inherit and 
unfortunate that D forbids it.

I'd like to hear what Manu says about it, because from what I am 
reading between the lines is that he probably does not need to be 
using classes but cannot use structs because the are too limited 
- that's my guess, but I really don't know. For me, I'd use 
structs much more often except that they cannot inherit.

--rt


More information about the Digitalmars-d mailing list