I am analyzing the different between two projects that process millions of messages. One project uses polymorphism, and the other - not every message will be represented by a polymorphic subtype.
I have profiled both projects using VTune. High-level summary data seems to make sense: a polymorphic design has a higher "incorrect predicted" speed, a higher CPI, and a higher "ICache misses" speed than a non-polymorphic version implemented using IF statements.
A polymorphic design has a line of source code, for example:
object->virtualFunction();
and this is called millions of times (where the subtype changes each time). I expect the polymorphic design to be slower due to incorrect predictions or team flaws. As stated above, the VTune Summary tab seems to confirm this. However, when I go to the metrics next to the line of source code, there are absolutely no indicators other than:
- Total Pipe Slots Completed → Retirement → Total Retirement
- Filled Pipeline Slots → Retirement → Total Retirement
- Total number of empty slots in the pipeline → Front end → Front interface width → Foreground bandwidth
- Incomplete cable slots → Front front bound → Front interface width → Front interface bandwidth MITE
,
- , ? : , ?
/ , .
VTune?