Re: Performance cost of RTTI vs programmed type system
In article
<41e77b2b-83a6-4f69-8c85-50ab59855fd2@w7g2000hsa.googlegroups.com>,
Sebastian Karlsson <Sebastian.Karlsson@mmorpgs.org> wrote:
I'm kind of comparing RTTI vs a programmed type sytem of the type:
enum Type { blah, etc }
class Base
{
virtual Type GetType() const = 0;
}
If speed is most important, you could even store the type as a field in
the object, making GetType() a single inline memory fetch and nothing
more:
class Base {
Type const type;
public:
Base( Type t ) : type( t ) { }
Type GetType() const { return type; }
};
If you're comparing to something like
class Base2 {
public:
virtual ~Base2() { }
std::type_info const& GetType() const { return typeid (*this); }
};
On most compilers I'd expect two memory fetches to get the type: one to
read the vtable pointer, and another to get the pointer to the type_info
object. A smart compiler could perhaps store the type_info object in the
vtable, perhaps at a negative offset, eliminating one of the memory
fetches.
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]