quelqu'un peut-il s'il vous plaît dire ce qui est l'utilisation du mot-clé en ligne dans delphice qui est l'utilisation du mot-clé en ligne dans delphi
Répondre
Il est une indication pour le compilateur que la fonction/procédure devrait être (si possible) inline, à savoir quand vous l'appelez, il devrait être étendu comme une macro au lieu d'être appelé.
Ceci est une optimisation pour (très) petites fonctions où le temps système d'un appel serait significatif. Vous trouverez de nombreux exemples dans par exemple windows.pas
Ce qui se passe réellement dépend de la complexité de la fonction, de l'accès public/privé et de votre version Delphi.
Il dit au compilateur de générer du code pour le en ligne; routine sur l'endroit où il est appelé, au lieu de sauter à la routine et de retour.
Pour les procédures qui se traduisent par un assembleur très court, cela peut être un avantage pour les performances, car le code réel est relativement court par rapport à la préparation des paramètres, l'appel réel et la procédure prologue/épilogue.
Si la procédure est trop longue, cela risque de freiner les performances et de gonfler votre code de manière gigantesque.
+1 Je préfère cette réponse. Très bien expliqué. –
D'autres ont répondu à ce que fait en ligne, mais je voulais juste souligner qu'il existe une option de compilateur pour activer, désactiver ou auto. Consultez "Calling Procédures et fonctions" dans les documents D2009 pour une très bonne explication de la mécanique de l'inline. Voici le lien vers la documentation en ligne:
Il est emprunté à C en ce qu'il indique au compilateur que c'est une routine courte qui est souvent appelé et il recommande que le compilateur traite la fonction comme une macro et intègre le code de fonction directement dans le programme au point appelé plutôt que d'utiliser un appel de fonction.
Cela donne un code plus rapide car il n'y a pas de surcharge d'appel de fonction, mais au détriment d'un programme plus important. Notez aussi que comme dans C c'est une recommandation au compilateur, il n'a pas réellement à faire ainsi et l'optimiseur peut vous remplacer.
Où faire cela? Bien comme le déroulement de la boucle, c'est une technique qui est très rarement utilisée de nos jours. L'endroit classique où l'utiliser est une structure imbriquée qui est critique en temps réel, comme le rendu du code dans une application graphique où quelques appels de machine rasés à chaque itération peuvent augmenter le taux de rafraîchissement de l'écran.
Le D2005 inline est ce que vous décrivez. Le Delphi 2006+ inline peut intégrer une unité de compilation croisée sans déclarer la fonction entièrement dans un en-tête. C'est beaucoup plus difficile et quelque chose que C n'est pas capable de standard (bien que certains systèmes d'optimisation globale essayent) –
Appuyez sur Ctrl + Alt + C (fenêtre de débogage de l'ensemble du processeur) pendant le débogage dans Delphi, avant d'appeler votre fonction inline. Et vous verrez que les fonctions en ligne commencent sans "appel" et que vous passez à une autre adresse. C'est la fonctionnalité d'optimisation.
- 1. 'Qui est en ligne?' Ruby Network Program
- 2. Vérification du fichier est ouvert dans Delphi
- 3. Est-ce que The Perl Journal est disponible en ligne?
- 4. Maths du temps en Delphi
- 5. ce qui est d2k dans l'oracle
- 6. ce qui est classe dans java.net.IDN 1.6
- 7. Catch exceptions dans un bloc utilisant vs en dehors du bloc d'utilisation - ce qui est mieux?
- 8. Affichage en ligne des journaux de serveur? Est-ce encouragé?
- 9. Est-ce que .NET est équivalent à ActionList de Delphi?
- 10. Echapper seulement ce qui est nécessaire, est-ce possible?
- 11. Outils qui peut analyser Delphi format XMLDoc et construire l'aide en ligne
- 12. En ce qui concerne gridview
- 13. Contrôles Delphi riches qui prennent en charge les recherches RegEx
- 14. Comment importer un fichier wsdl en Delphi hors ligne?
- 15. Comment est-ce que je itère sur CIN ligne par ligne en C++?
- 16. ce qui est la boîte de message dans asp.net
- 17. Comment modifier l'historique de bash pour compléter ce qui est déjà sur la ligne?
- 18. Constructions connues qui plantent l'IDE Delphi
- 19. en ce qui concerne l'édition d'image
- 20. Qu'est-ce qui est comparé à quoi dans l'opcode cmovl?
- 21. qu'est-ce qui est cool dans jmx-console de jboss?
- 22. Qu'est-ce qui est préféré CTabCtrl vs. CPropertySheet dans MFC?
- 23. En ce qui concerne le chiffrement web.config en utilisant nant
- 24. En ce qui concerne interrompre la communication
- 25. ce qui signifie "Le caractère générique correspondant est stricte"
- 26. Afficher la position dans DBGrid lors du défilement dans Delphi
- 27. comment faire ce qui suit en ruby?
- 28. Comment est-ce que je programme une forme hors ligne du scanner de mémoire crucial
- 29. en asp.net ce qui différencie Request.IsAuthenticated = true
- 30. Qu'est-ce qui provoquerait le changement du répertoire en cours d'une application en cours d'exécution?
Est-ce vraiment le compilateur qui s'occupe réellement de cette directive? J'ai essayé de compiler une unité en utilisant 'Borland Delphi Version 15.0' mais il n'a pas pu trouver la directive inline. –
en ligne est D2005 +, mais fonctionne uniquement unité croisée depuis D2006 iirc. Et oui, le compilateur le fait. Ce n'est pas vraiment comme une macro (l'inline ne fonctionne pas au niveau de la source, mais un niveau plus profond, après analyse, sur le niveau de code généré) –