É 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)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 ++:
#incluirNo 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.