Como usar funções embutidas em C ++

Como usar funções embutidas em C ++
Em C ++, o termo “Funções embutidas” refere -se à prática de colocar imediatamente o código de uma função no local no código em que a chamada de função é feita em vez de executá -la como uma chamada de função distinta. Quando um programa chama uma função, a CPU deve interromper a execução do código principal, passar o controle da função chamada e depois retomar a execução da função chamada.

É um dos métodos de otimização usados ​​pelos programadores para acelerar a execução de seções sensíveis ao tempo de código por compiladores. A sobrecarga de uma chamada de função pode ser removida por inline a função, que permite ao compilador substituir a chamada de função pelo conteúdo real da função.

Como usar funções embutidas em c++

Usar funções embutidas Em C ++, você precisa incluir a palavra -chave 'em linha' antes da declaração de função. Aqui está um exemplo:

Inline int add (int a, int b)
retornar a + b;

O 'em linha' A palavra -chave informa o compilador para substituir uma chamada à função ao longo do código do programa com o código real da função. A definição da função é modificada imediatamente na instrução de chamada em vez de ser armazenado junto com o endereço de memória da instrução e carregado na memória.

É importante ter em mente que o em linha A palavra -chave pede ao compilador algo em vez de dar um comando. Em algumas circunstâncias, o compilador pode decidir não incluir a função. Portanto, você pode usar uma macro no lugar de definir em linha.

Exemplo de funções embutidas

A seguir é o código para usar funções embutidas em C ++:

#incluir
usando namespace std;
Inline int setNum ()
retornar 5;

int main ()
int n = setNum ();
cout << " The inline function returned: " << n <<"\n";
retornar 0;

No programa acima, a função setnum () é identificado como um função embutida usando a frase "em linha". O compilador substitui a declaração de chamada com a definição de setnum () Quando esta função embutida é chamada. Como resultado, a instrução substitui 5 para setnum () e armazena 5 na variável n.

Saída

Quando usar funções embutidas em C++?

Embora a sobrecarga de cada chamada de função possa montar rapidamente, funções embutidas pode aumentar consideravelmente a velocidade dos programas que fazem inúmeras chamadas de função menores. No entanto, funções inlinesas Nem sempre é a estratégia ideal, porque pode tornar o código maior e potencialmente tornar o sistema de cache da CPU menos eficaz.

Ao determinar se deve embrulhar uma função, há várias coisas a considerar.

1: tamanho da função

O tamanho da função é um dos elementos mais cruciais. Funções menores são tipicamente melhores candidatos para inline já que eles têm menos probabilidade de afetar negativamente o tamanho do código e cache da CPU. Além disso, como a sobrecarga das chamadas de função pode constituir um gargalo, as funções chamadas com frequência ou em loops próximas são candidatos adequados para inline.

2: Nível de otimização

O nível de otimização do compilador também deve ser considerado. A maioria dos compiladores modernos tem um "em linha" palavra -chave que pode ser usada para propor que uma função seja Inlined; No entanto, se o compilador julgar que não haveria vantagem de velocidade, ainda pode decidir não embalar a função. Níveis de otimização mais altos são onde os compiladores costumam fazer otimizações mais agressivas; portanto, funções que não são Inlined em níveis mais baixos também pode ser Inlined em níveis mais altos.

3: Impacto de Inlining

Também é importante considerar o impacto de inline no tamanho do código. Enquanto inline Pode melhorar o desempenho, reduzindo a sobrecarga das chamadas de função, também pode aumentar o tamanho do código, potencialmente reduzindo a eficiência do sistema de cache da CPU. Em geral, funções muito grandes ou que contêm loops ou variáveis ​​estáticas são candidatos a inline.

4: Programação de microarquitetura

Funções embutidas são mais utilizados na programação de microarquitetura, nos casos em que o custo da função das chamadas de função é significativo. Também é valioso na criação de pequenas rotinas ou avaliadores que são chamados repetidamente ao longo do código.

Conclusão

Funções embutidas em C ++ são funções poderosas para melhorar o desempenho do programa, mas é importante considerar cuidadosamente o impacto de inline no tamanho do código, cache de CPU e nível de otimização. Ao selecionar cuidadosamente quais funções em linha e no nível de otimização, os desenvolvedores podem obter melhorias significativas de desempenho sem sacrificar o tamanho ou a legibilidade do código.