On my system, a simple virtual method call is about 70% slower than a
direct method call.
If the method is forwarded it is about 100% slower. So if a program
spends about 20% of its time with function calls, it runs about 20%
slower, if you program it consequently with OBC.
The memory consumption is more costly. On a 32 bit system,
each virtual method needs 20 byte for each instance. The object itself
needs another 24 bytes and the hash table starts with a size of 45 KB.
But since I have a computer with 1 GB ram, for the moment I can live
with that.
If somebody in the development of the GCC reads this, something that would help OBC programming a lot is a warning modus that warns on incompatible function pointer assignment. But it should not warn if the function arguments differ only in the pointer type (from and to void*).