C'est une question, toute bête mais avant de remanier le code ma Lib dans le but d'obtenir un peu de rapidité j'aimerai savoir :
En effet mon code d'exécution des fonctions 'ExecFunc' est très long.
L'utilisation de sous-fonction C va surement facilliter l'accès rapide au code de chaque fonction de la Lib en réduisant la Taille de 'ExecFunc' mais quelle sera le coût de l'appel de chaque sous-fonction en C ?
J'utilise des Switch case pour repérer les différentes fonctions.
J'ai été surpris d'apprendre par S.Stearley que TIGCC les traitait comme des If then.
Du coup j'ai pensé à faire des Goto pour baissé le temps de recherche et d'exécution d'une fonction.
Alors TIGCC utilise ou non un Vrai Table de Jump pour repérer les Label des Goto ?
Si c'est le cas je pourrai Aller directement à la fonction voulue sans me taper tous les tests de détection des fonctions précédentes.
Pouvez-vous m'éclairer ?
PpHd Le 18/10/2004 à 11:37 >Alors TIGCC utilise ou non un Vrai Table de Jump pour repérer les Label des Goto ?
Tout depend. En -O2 et si la table est suffisament grande, oui.
J'ai rien pigé là. c'est quoi -O2 ?
En fait je veux réorganiser ma Lib pour gagner en Vitesse.
Il y a plus de 40 fonctions. Avec des Switch case ou des If c'est là galère.
J'hésite entre 2 solutions :
-Des Goto et Lbl mais reste que les code de 'ExecFunc' reste énorme
- Des pointeurs sur Fonctions à partir d'un Tableau de Pointeur sur fonctions. Il y aura +de 40 fonctions. Alors c'est quoi le coût de l'appel d'une fonction en C ?
Que me conseillez-vous ?
PpHd Le 18/10/2004 à 11:58 -O2: Directive d'optimisation (Opitimisation du code produit).
Oui mais je fais quoi ?
ou je trouve ça
Dis donc , je suis étudiant à la Fac d'Eco, la prog c'est un dada, parceque j'ai toujours été fan de Calc depuis le collège.
C'est la TI-92Plus qui m'a amene au C en de Juillet 2004 après pas quelques balbuciment en VB et VBA.
Alors pardonnez mon manque de références.
J'apprends au fur et à mésure.
Pour le moment, j'ai juste lu ce qui concerne , la prog C et quelques fichiers *.H de la Doc de TIGCC.
Mais comme je veux aller plus loin, des références supplémentaires ne me feront pas de mal.
--------------------------------------------------------------------------------------------
Finallement j'ai décidé de tenter le coup avec des Pointeurs sur Fonction.
Je vais donc créer pour chaque groupe de fonction similaire de ma LIB un fonction C.
Je ferai un Tableau de pointeurs avec ces fonctions.
ça devrait augmenter légèrement la vitesse d'exécution de mes fonctions je pense.
Vu que Le code 'execfunc' sera plus compact et à accès directe grace au tableau de pointeur sur fonction.
andoh_wilfried Le 18/10/2004 à 14:00Edité par andoh_wilfried le 19/10/2004 à 11:07 Merci PpHd, au moins je ne mourrai pas ignorant !
Si ton switch est très dense (peu de trous dans ta liste de valeurs), même en -Os, tu auras une table de sauts. S'il y a des trous, tu auras une chaîne de tests. -Os (optimisation taille) donne (idéalement) le code le plus compact.
et il sait générer un mix ?
genre un switch sur 0 1 2 3 4 5 6 7 25 42, est-ce que ça teste 25 et 42 puis fait une table de sauts ou c'est pas supporté ?
Je pense que ce n'est pas supporté, il faut explicitement faire un switch sur 0..7 25 42 (cf. extension GNU "case ranges") et un sur 0 1 2 3 4 5 6 7.
PpHd Le 22/10/2004 à 09:04 [troll] Ca serait enleve quand cette extension ? [/troll]