Tuesday, February 24, 2009

The Direct Cost of Virtual Function Calls in C++


Download ---The Direct Cost of Virtual Function Calls in C++

The Direct Cost of Virtual Function Calls in C++


Abstract.
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.


Virtual function tables
Superscalar processors
Thunks
Branch prediction
Advanced superscalar execution
Co-scheduling of application code
Simulation scheme
Benchmarks
Processors
Experimental Results
Direct cost on P96
Instructions and cycles
Thunks
Generalization to other processors
Influence of branch penalty
Influence of branch prediction
Influence of load latency
Influence of issue width
Cost per dispatch



0 comments:

Post a Comment