the direct cost of virtual function calls in c++
We study the direct cost of virtual function calls in C++ programs, assuming the standard implementation using virtual function tables. We measure this overhead experimentally for a number of large benchmark programs, using a combination of executable inspection and processor simulation. Our results show that the C++ programs measured spend a median of 5.2\% of their time and 3.7\% of their instructions in dispatch code. For "all virtuals" versions of the programs, the median overhead rises to 13.7\% (13\% of the instructions). The "thunk" variant of the virtual function table implementation reduces the overhead by a median of 21\% relative to the standard implementation. On future processors, these overheads are likely to increase moderately.
direct cost virtualization functional program standardization implementation tables measurement benchmark combinational inspection processor simulation timing instruction code version future relation