> > You take a "big" hit for the compare/switch because it always checks > > for out-of-bounds cases, so you end up with a lot of compares and > > jumps, which are bad for performance. > > What if the code "guarantees" type is correct, so we don't need to > compare before indexing the vfunc array?
The only way I know of to do that is to have as many types as there are values in a given integer-type size. So, if you have 256 object types, you can skip a step. GCC's switch statement logic is pretty smart about minimizing code execution time, but it still has a lot to do to be compliant with the C language spec and also never crash. > > Adding a new object in C means editing *all* the files that have such > > a compare/switch in them. > > Surely just updating the one vtable? C, not C++. Go read the pcb code; it has tables and switch statements all over the place that check the object type. If you're using vtables anyway, you might as well put a pointer to the vtable in the structure and skip all the "type" checking. _______________________________________________ geda-user mailing list geda-user@moria.seul.org http://www.seul.org/cgi-bin/mailman/listinfo/geda-user