Função embutida v. Macro em C - O que há de sobrecarga (memória / velocidade)?

eu pesquiseiEstouro de pilha para os prós / contras de macros semelhantes a funções v. funções embutidas.

Encontrei a seguinte discussão:Prós e contras de diferentes funções de macro / métodos em linha em C

... mas não respondeu à minha pergunta principal.

Ou seja, qual é a sobrecarga em c do uso de uma função macro (com variáveis, possivelmente outras chamadas de função) v. Uma função embutida, em termos de uso de memória e velocidade de execução?

Existem diferenças dependentes do compilador na sobrecarga? Eu tenho o icc e o gcc à minha disposição.

Meu snippet de código que estou modularizando é:

double AttractiveTerm = pow(SigmaSquared/RadialDistanceSquared,3);
double RepulsiveTerm = AttractiveTerm * AttractiveTerm;
EnergyContribution += 
   4 * Epsilon * (RepulsiveTerm - AttractiveTerm);

Meu motivo para transformá-lo em uma função / macro embutida é para que eu possa soltá-lo em um arquivo c e compilar condicionalmente outras funções / macros semelhantes, mas ligeiramente diferentes.

por exemplo.:

double AttractiveTerm = pow(SigmaSquared/RadialDistanceSquared,3);
double RepulsiveTerm = pow(SigmaSquared/RadialDistanceSquared,9);
EnergyContribution += 
   4 * Epsilon * (RepulsiveTerm - AttractiveTerm);

(observe a diferença na segunda linha ...)

Essa função é central no meu código e é chamada milhares de vezes por etapa no meu programa, e meu programa executa milhões de etapas. Portanto, quero ter o mínimo de sobrecarga possível, por isso estou perdendo tempo me preocupando com a sobrecarga de inlining v. Transformar o código em uma macro.

Com base na discussão anterior, já percebo outros prós / contras (independência de tipo e erros resultantes disso) das macros ... mas o que mais quero saber e que atualmente não sei é o DESEMPENHO.

Eu sei que alguns de vocês, veteranos em C, terão ótimas idéias para mim !!

questionAnswers(8)

yourAnswerToTheQuestion