Virtual Function Optimization
John Demme
me at teqdruid.com
Sun Apr 30 14:02:50 PDT 2006
Ben Phillips wrote:
> How much does D optimize virtual function calls? Lets say you have the
> following interface and class (not very useful ones).
>
> interface Collection
> {
> public int size();
> }
>
> class Array : Collection
> {
> private int[] array;
> public:
> this() { array.length = 10; }
> int size() { return array.length; }
> }
>
> Now consider the following statements
>
> Collection c = new Array();
> Array a = new Array();
>
> c.size(); // clearly a virtual function call
> a.size(); // ?????
>
> Can the compiler deduce that "a.size()" should not be called through the
> vtable since the type of "a" is not ambiguous?
Probably not, but it's not too useful. In the slightly more generic case:
Collection c = new Array();
Array a = ...
c.size(); // clearly a virtual function call
a.size(); // Also has to be a virtual function call, since a might be
//a reference to a subclass
I have heard Walter say (some time ago) that there are a good deal of
optimizations be be done for OO code that he hasn't done yet. Based on my
monitoring of the changelog, I doubt they've been done, but optimizations
are not a priority in my book, anyway.
~John Demme
More information about the Digitalmars-d
mailing list