Os ponteiros de função forçam um pipeline de instrução a ser limpo?

CPUs modernas possuem pipelining extensivo, isto é, estão carregando instruções e dados necessários muito antes de realmente executarem a instrução.

Às vezes, os dados carregados no pipeline são invalidados e o pipeline deve ser limpo e recarregado com novos dados. O tempo necessário para reabastecer o pipeline pode ser considerável e causar lentidão no desempenho.

Se eu chamar um ponteiro de função em C, o pipeline é inteligente o suficiente para perceber que o ponteiro no pipeline é um ponteiro de função e que ele deve seguir esse ponteiro para as próximas instruções? Ou ter um ponteiro de função fará com que o pipeline limpe e reduza o desempenho?

Eu estou trabalhando em C, mas eu imagino que isso é ainda mais importante em C ++, onde muitas chamadas de função são através de v-tables.

editar

@JensGustedt escreve:

Para ser um sucesso de desempenho real para chamadas de função, a função que você chama deve ser extremamente breve. Se você observar isso medindo seu código, você definitivamente deve revisitar seu design para permitir que essa chamada seja

Infelizmente, essa pode ser a armadilha em que caí.

Escrevi a função de destino pequena e rápida por motivos de desempenho.

Mas é referenciado por um ponteiro de função para que possa ser facilmente substituído por outras funções (Apenas faça o ponteiro referenciar uma função diferente!). Como eu me refiro a isso por meio de um ponteiro de função, não acho que ele possa ser embutido.

Então, eu tenho uma função extremamente breve, não-inline.

questionAnswers(4)

yourAnswerToTheQuestion