template classes faster than derived classes?
John S. Fine
johnsfine@verizon.net
Tue Nov 24 20:24:00 GMT 2009
Nava Whiteford wrote:
> Thanks for your extremely quick response and suggestions.
>
> I've reworked the code so it no longer does as much IO. The difference
> is striking!
>
> http://linuxjunk.blogspot.com/2009/11/are-templates-faster-than-subclasses.html
>
> 5.9s for derived class, 0.008s for the templated version.
>
> I'm guessing that it's automatically inlining the code in the template
> version? And the virtual method can not be inlined (is this ever
> possible?).
>
>
>
I didn't see the first version. In the current version, the templated
code is simple enough that the optimizer can figure out the whole thing
and skip everything. The virtual code is not simple enough, so the code
actually executes.
So you still aren't measuring what you set out to measure.
I don't know whether there are conditions under which the optimizer can
take advantage of being able to deduce the run time type in order to
optimize away the vtable lookup and then further optimize to inlining
the function rather than calling it.
More information about the Gcc-help
mailing list