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 !!