Final class and interface

Steven Schveighoffer schveiguy at yahoo.com
Mon Mar 3 19:07:10 PST 2014


On Mon, 03 Mar 2014 21:48:16 -0500, Casper Færgemand <shorttail at gmail.com>  
wrote:

> Is there any loss in performance instantiating an interface variable as  
> a final class implementing only that interface, as opposed to a class  
> variable?

You mean the difference between:

final class C : I {...}

// this
I i = new C;

// and this
C c = new C;

???

The difference in performance is huge. As a final class, no virtual calls  
are needed. In itself, this is not a huge deal, as a virtual call is not  
too much worse than a standard call.

However, method calls on the concrete class can be inlined, and an inline  
call is generally very quick when compared to any kind of other call.

-Steve


More information about the Digitalmars-d-learn mailing list