VTune profiling doesn't show metrics for predicting branches on polymorphic function?

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?

+3
2

:

- , ? doesn't- , ?

/ , .

, , , .

, 22:30 . .

, , , , , . , . , , .

. vtable vtable .

, - CPU, , . , , , , ...

.

+2

, "" .

( _PS ). , . , , add CPU_CLK_UNHALTED, imul, add.

"" , , , BR_MISP_RETURED.ALL_BRANCHES_PS.

100% "", , , - VTune . , 6 , , asm VTune:)

PS. . , . . - , .

+1

All Articles