Comment utiliser les fonctions en ligne dans C ++

Comment utiliser les fonctions en ligne dans C ++
En C ++, le terme «Fonctions en ligne» fait référence à la pratique de mettre immédiatement le code d'une fonction dans la place dans le code où l'appel de fonction est fait plutôt que de l'avoir exécuté comme un appel de fonction distinct. Lorsqu'un programme appelle une fonction, le CPU doit arrêter l'exécution du code principal, passer le contrôle à la fonction appelée, puis reprendre l'exécution de la fonction appelée.

Il s'agit de l'une des méthodes d'optimisation utilisées par les programmeurs pour accélérer l'exécution des sections de code sensibles au temps par les compilateurs. Les frais généraux d'un appel de fonction peuvent être supprimés par enlin un fonction, qui permet au compilateur de remplacer l'appel de la fonction par le contenu réel de la fonction.

Comment utiliser les fonctions en ligne en c++

Utiliser fonctions en ligne En C ++, vous devez inclure le mot-clé 'en ligne' Avant la déclaration de fonction. Voici un exemple:

en ligne int add (int a, int b)
retourner a + b;

Le 'en ligne' Le mot-clé informe le compilateur pour remplacer un appel à la fonction tout au long du code du programme avec le code réel de la fonction. La définition de la fonction est modifiée immédiatement à l'instruction d'appel plutôt que d'être stockée avec l'adresse mémoire de l'instruction et chargée dans la mémoire.

Il est important de garder à l'esprit que le en ligne Le mot-clé demande au compilateur quelque chose plutôt que de lui donner une commande. Dans certaines circonstances, le compilateur peut décider de ne pas alimenter la fonction. Par conséquent, vous pouvez utiliser une macro à la place de définir en ligne.

Exemple de fonctions en ligne

Ce qui suit est le code à utiliser fonctions en ligne en C ++:

#inclure
Utilisation de Namespace Std;
inline int setnum ()
retour 5;

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

Dans le programme ci-dessus, la fonction setnum () est identifié comme un fonction en ligne Utilisation de la phrase "en ligne". Le compilateur remplace l'instruction d'appel par la définition de setnum () Lorsque cette fonction en ligne est appelée. En conséquence, l'instruction substitue 5 à setnum () et stocke 5 dans la variable n.

Sortir

Quand utiliser les fonctions en ligne en C++?

Bien que les frais généraux de chaque appel de fonction puissent monter rapidement, fonctions en ligne peut augmenter considérablement la vitesse des programmes qui font de nombreux appels de fonction mineurs. Néanmoins, fonctions d'inclinaison n'est pas toujours la stratégie idéale car elle peut rendre le code plus grand et potentiellement rendre le système de mise en cache du CPU moins efficace.

Lors de la détermination de l'opportunité en ligne une fonction, Il y a plusieurs choses à considérer.

1: taille de la fonction

La taille de la fonction est l'un des éléments les plus cruciaux. Les fonctions plus petites sont généralement de meilleurs candidats pour enlin car ils sont moins susceptibles d'affecter négativement la taille du code et de la mise en cache du CPU. De plus, puisque les frais généraux des appels de fonction peuvent constituer un goulot d'étranglement, les fonctions qui sont appelées fréquemment ou en boucles rapprochées sont des candidats appropriés enlin.

2: Niveau d'optimisation

Le niveau d'optimisation du compilateur doit également être pris en compte. La plupart des compilateurs modernes ont un "en ligne" mot-clé qui peut être utilisé pour proposer une fonction enragé; Néanmoins, si le compilateur juge qu'il n'y aurait aucun avantage de vitesse, il peut toujours décider de ne pas alimenter la fonction. Des niveaux d'optimisation plus élevés sont l'endroit où les compilateurs font souvent des optimisations plus agressives, donc des fonctions qui ne sont pas enragé à des niveaux inférieurs peut également être enragé à des niveaux plus élevés.

3: Impact de l'inclinaison

Il est également important de considérer l'impact de enlin sur la taille du code. Alors que enlin Peut améliorer les performances en réduisant les frais généraux des appels de fonction, il peut également augmenter la taille du code, réduisant potentiellement l'efficacité du système de mise en cache du CPU. En général, les fonctions trop grandes ou qui contiennent des boucles ou des variables statiques sont de mauvais candidats pour enlin.

4: Programmation de la microarchitecture

Fonctions en ligne sont les plus utilisés dans la programmation de microarchitecture, dans les cas où le coût de la fonction des appels de fonction est significatif. Il est également utile pour créer de petites routines ou évaluateurs auxiliaires qui sont appelés à plusieurs reprises tout au long du code.

Conclusion

Fonctions en ligne en C ++ sont des fonctions puissantes pour améliorer les performances du programme, mais il est important de considérer soigneusement l'impact de enlin sur la taille du code, la mise en cache du processeur et le niveau d'optimisation. En sélectionnant soigneusement les fonctions en ligne et à quel niveau d'optimisation, les développeurs peuvent obtenir des améliorations de performances significatives sans sacrifier la taille ou la lisibilité du code.