Slow performance compared to C++, ideas?
Jonathan M Davis
jmdavisProg at gmx.com
Sun Jun 2 03:16:00 PDT 2013
On Sunday, June 02, 2013 11:53:26 Jacob Carlborg wrote:
> On 2013-06-01 23:08, Jonathan M Davis wrote:
> > If you don't need polymorphism, then in general, you shouldn't use a class
> > (though sometimes it might make sense simply because it's an easy way to
> > get a reference type). Where it becomes more of a problem is when you
> > need a few polymorphic functions and a lot of non-polymorphic functions
> > (e.g. when a class has a few methods which get overridden and then a lot
> > of properties which it makes no sense to override). In that case, you
> > have to use a class, and then you have to mark a lot of functions as
> > final. This is what folks like Manu and Don really don't like,
> > particularly when they're in environments where the extra cost of the
> > virtual function calls actually matters.
> If a reference type is needed but not a polymorphic type, then a final
> class can be used.
Yes. The main problem is when you have a class with a few methods which should
be virtual and a lot that don't. You're forced to mark a large number of
functions as final. That burden can be lessened by using final with a colon
rather than marking them individually, but rather what seems to inevitably
happen is that programmers forget to mark any of them as final (Manu can rant
quite a bit about that, as he's had to deal with it at work, and it's cost him
quite a bit of time, as he has to go through every function which wasn't
marked as final and determine whether it's actuallly supposed to be virtual or
not). Having non-virtual be the default makes functions efficient by default.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list