virtual method pointer

Gor Gyolchanyan gor.f.gyolchanyan at gmail.com
Thu May 3 14:15:51 PDT 2012


Basically I want to make a dynamic typing subsystem in D. I want to
take a given object of a static type, construct a dynamic interface
for it and later use that interface to event handling.
To construct a dynamic interface, I need to extract the virtual
methods without resolving them prematurely.

On Fri, May 4, 2012 at 1:11 AM, Steven Schveighoffer
<schveiguy at yahoo.com> wrote:
> On Thu, 03 May 2012 16:57:01 -0400, deadalnix <deadalnix at gmail.com> wrote:
>
>> Le 03/05/2012 22:22, Gor Gyolchanyan a écrit :
>>>
>>> That workaround is pretty obvious, but I can't afford to make an extra
>>> call every time. This event system is supposed to be ultra-fast. Isn't
>>> there a way to get to the vtable etry itself?
>>
>>
>> 1/ Such a trivial thing is surely inlined by any compiler with
>> optimizations on.
>
>
> I wouldn't count on it.  You can't inline a lambda that is used somewhere
> it's not declared.
>
>
>> 2/ You can afford a virtual dispatch, but can't afford a function call ?
>
>
> In my experience, virtual calls are nearly as cheap as normal calls.  But
> doubling the function call setup/teardown/call is not insignificant.  It all
> depends on how much time is spent in the function being called.
>
>
>> I do think you are in case of premature optimizations here.
>
>
> This is very likely, it all depends on what you are doing *inside* the call.
>
> -Steve



-- 
Bye,
Gor Gyolchanyan.


More information about the Digitalmars-d mailing list