Slow performance compared to C++, ideas?

Paulo Pinto pjmlp at progtools.org
Wed Jun 5 14:01:21 PDT 2013


Am 05.06.2013 22:01, schrieb Kapps:
> On Tuesday, 4 June 2013 at 04:07:10 UTC, Andrei Alexandrescu wrote:
>> Choosing virtual (or not) by default may be dubbed a mistake only in a
>> context. With the notable exception of C#, modern languages aim for
>> flexibility and then do their best to obtain performance. In the
>> context of D in particular, there are arguments for the default going
>> either way. If I were designing D from scratch it may even make sense
>> to e.g. force a choice while offering no default whatsoever.
>
> C# chose final-by-default not simply because of performance issues but
> because of issues with incorrect code. While performance is an issue
> (much more so in D than in C#), they can work around that using their
> JIT compiler, just like HotSpot does for Java. The real issue is that
> overriding methods that the author did not think about being overridden
> is *wrong*. It leads to incorrect code. Making methods virtual relies on
> some implementation details being fixed, such as whether to call fields
> or properties. Many people who wrap fields in properties use the fields
> still in various places in the class. Now someone overrides the
> property, and finds that it either makes no change or in one or it works
> everywhere except in one or two fields where the author refers to the
> field. By forcing the author to specifically make things virtual you
> force them to recognize that they should or shouldn't be using the
> property vs the field. There are many other examples for similar issues,
> but I feel properties are one of the biggest issues with
> virtual-by-default, both from a correctness standpoint and a performance
> standpoint. Having @property imply final seems rather hackish though
> perhaps.
>
> Anders Hejlsberg talks about why they decided to use final by default in
> C# at http://www.artima.com/intv/nonvirtualP.html. See the Non-Virtual
> is the Default section. They do this *because* they saw the drawbacks of
> Java's virtual by default and were able to learn from it.
>

Oh, I though it was based on his experience with Object Pascal and 
Delphi, that also do final by default.

Thanks for sharing.

--
Paulo



More information about the Digitalmars-d mailing list