This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Speed impact of virtual inheritance
Frans Englich wrote:
> On Monday 10 October 2005 22:29, Mark Mitchell wrote:
>
>>Frans Englich wrote:
>>
>>>Followup question: what is the increased cost of calling a non-virtual,
>>>inlined function('inline' keyword) on a virtual base?
>>
>>None, if the function is inlined -- and whether it is inlined or not
>>should not be affected by whether or not it is in a virtual base.
>
>
> Ok, let me check my understanding of Joe's and your's reply, by an example:
>
> //----------------------------------------------
> class Shared {
> public:
> // ....
> inline void ref() { m_ref++; }
> // ...
> protected:
> unsigned int m_ref;
> };
>
> class B : public virtual Shared {};
> class C : public virtual Shared {};
> class BC : public B, public C {};
> //----------------------------------------------
>
> Running the expression "BCinstance->ref()" leads to the penalty that accessing
> the "m_ref" variable requires an indirection, if I've understood correctly.
Yes.
> What can safely be concluded from that? For example, could register allocation
> make it uncertain exactly how much the indirection costs?
Yes. (There are even scenarios where the indirection could actually
help, rather than hurt.) You'll just have to measure.
--
Mark Mitchell
CodeSourcery, LLC
mark@codesourcery.com
(916) 791-8304