Optimisation du langage Delphi
1) Valeur de retour du type d'enregistrement ou de tableau
Les programmeurs C++ ne le feront pas car la valeur de retour sera placée sur la pile, ce qui entraînera une efficacité à la fois temporelle et spatiale. Delphi n'a pas ce problème. La valeur de retour est équivalente au paramètre Out et l'appelant passe le pointeur d'unité mémoire. Par conséquent, vous pouvez utiliser des valeurs de retour d'enregistrement ou de tableau pour augmenter la lisibilité et la commodité d'écriture des expressions.
2) Expression publique
Delphi extrait uniquement les expressions courantes dans une ligne d'instruction. Si une expression commune contient un appel de fonction ou un accès à une propriété, elle n'est pas extraite, c'est-à-dire qu'elle est évaluée deux fois, car l'extraction peut entraîner une modification de la sémantique.
3) paramètres const
Lorsque les paramètres de la fonction ne sont pas modifiés, si la longueur du paramètre dépasse 4 octets ou est de type interface, chaîne ou tableau dynamique, l'utilisation des paramètres const permet au compilateur de le transmettre en mode adresse sans modifier la technologie de référence.
4) Austérité
Delphi allouera un espace aussi petit que possible lors de l'attribution des unités de stockage. S'il est suffisamment petit et peut tenir dans un registre, le fonctionnement direct avec le registre est généralement utilisé. Par exemple, lors de l'attribution d'enregistrements ou de données d'une longueur de 4 octets, le compilateur utilisera automatiquement des registres 32 bits selon DWord.
5) Opérateur
La division par 2 ou 4 sera optimisée pour le décalage à droite, et la multiplication par 2 ou 4 sera optimisée pour le décalage à gauche, il n'est donc pas nécessaire d'utiliser spécifiquement des opérations de décalage et un code plus lisible peut être écrit. Mais la multiplication et la division par 8 et autres multiples de 2 n'auront pas cette optimisation.
i := i + 1; et Inc(i); produisent généralement le même code.
6) Virgule flottante
Delphi n'optimise pas les calculs en virgule flottante, même l'ajout d'opérations nulles ne sera pas optimisé et de nombreuses instructions FWAIT seront ajoutées. Par conséquent, lors de l'écriture d'opérations clés à virgule flottante, vous devez optimiser vous-même les expressions et extraire vous-même les expressions publiques. Utilisez le moins possible les variables intermédiaires, car les variables à virgule flottante ne seront pas optimisées et seront réécrites en mémoire même si elles ne sont pas utilisées ultérieurement. Utilisez l'assemblage si nécessaire ou envisagez d'utiliser C. Néanmoins, en général, il n'y a pas beaucoup de différence de performances entre les programmes équivalents Delphi et C à virgule flottante.
7) avec déclaration
with peut générer des variables intermédiaires implicites pour éviter des calculs répétés
8) Collecte
i dans [0..31] est plus rapide que (i >= 0) et (i <= 31)
9) Largeur de bits
Lorsque la compression n'est pas utilisée, utilisez un entier et un cardinal, car SmallInt, ShortInt, Byte, etc. occuperont également 4 ou 8 octets lorsque l'octet est aligné. Il fait toujours 32 bits dans le calcul et doit d'abord être étendu à 32 bits.