Suppose your class Trade has virtual functions and a comparable class Order has no virtual functions. What are the specific runtime overheads of the vptr/vtable usage?
- cpu cache efficiency — memory footprint of the vptr in each object. Java affected! If you have a lot of Trade objects with only one char data field, then the vptr greatly expands footprint and you overuse cache lines.
- [[ARM]] singles out this factor as a justification for -fno-rtti… see RTTI compiler-option enabled by default
- [[moreEffC++]] P116 singles out vptr footprint as the biggest performance penalty of vptr
- runtime indirection — “a few memory references more efficient”  in the Order usage
- inlining inhibition is the most significant overhead. P209 [[ARM]] says inline virtual functions make perfect sense so it is best to bypass vptr and directly call the virtual function, if possible.
 P209 [[ARM]] wording
Note a virtual function unconditionally introduces the first overhead, but the #2/#3 overheads can sometimes be avoided by a smart compiler.