| Auteur |
Un seul programme ou faire des sous-programmes |
|
|
lolotone Membre

 Messages: 30 Calculatrice : Graph 35 | Message posté: 03-03-2010 à 00:08  
Bonsoir.
Alors voilà je suis en train de faire un programme qui fera à peu près 10ko.
Ce que je me demande c'est s'il faut plutôt faire plusieurs sous programmes ou pas.
En fait je me demande la rapidité des fonctions Prog / Return, surtout lorsque Return renvoie à une ligne assez loin dans le programme principal.
Je pense pouvoir faire un unique programme sans Lbl bien sûr mais il y aurait de grandes conditions (par exemple un Then qui fait 15 lignes, un Else de 20 lignes) et je me demande si la calculatrice met plus de temps à survoler des dizaines de lignes à la recherche du Else si la condition n'est pas vérifiée ou du IfEnd si elle l'est, que de chercher un sous-programme.
Merci d'avance.
Bonjour (Bah oui j'ai commencé à écrire hier ).
|
 |
drsi-prog1max ► Programmeur Basic

 Messages: 463 Calculatrice : Graph 65 | Message posté: 03-03-2010 à 00:17  
A mon avis mieux vaut faire des sous programmes : c'est plus lisible, c'est plus facile à modifier, parce que avoir un If de 40 lignes c'est bof. Question rapidité, les Prog, ce ne sont pas des Lbl, donc c'est plutôt rapide donc plus tu as des conditions longues, mieux vaut en faire des sous programmes de 100/300 o.
 |
 |
PierrotLL Administrateur

 Messages: 1228 Calculatrice : Graph 85 | Message posté: 03-03-2010 à 00:24  
Si la condition est très grosse, oui, ça peut être intéressant de mettre son contenu dans un sous-programme. Il faudrait faire des tests pour savoir à partir de quelle taille on gagne de la vitesse. Comme tu l'as dit, il est possible que si le Prgo est loin dans le programme appelant ça perde du temps au Return.
Les sous programmes sont surtout utiles pour un bout de code qui va être utilisé à plusieurs endroit du programme.
Personnellement, je préfère faire des sous programmes qui ont une unique tâche, et qui la remplissent jusqu'au bout. Ça permet d'avoir une organisation que je trouve plus agréable.
EDIT: drsi_prog1max=> 100/300ko ? Sur une calculatrice qui n'a que 64ko de mémoire? 
 |
 |
drsi-prog1max ► Programmeur Basic

 Messages: 463 Calculatrice : Graph 65 | Message posté: 03-03-2010 à 01:04  
J'ai corrigé (ça fait bizarre un "o" tout seul aussi). Il faut dire que l'on parle souvent en ko, alors par habitude, il y a un "k" qui s'est glissé ..
 |
 |
lolotone Membre

 Messages: 30 Calculatrice : Graph 35 | Message posté: 05-03-2010 à 00:04  
Quote:
| A mon avis mieux vaut faire des sous programmes : c'est plus lisible, c'est plus facile à modifier |
|
Oui c'est sûr c'est pour ça que j'ai commencé sous avec des sous-programmes, et une fois que le code sera bon, je collerai chaque sous-programmes (ou pas) dans le programme principal. La seule question que je me posait était sur la rapidité et non pas sur tous les avantages / inconvénients des deux méthodes.
Une fois que j'aurais fini le programme, je ferai les deux méthodes pour voir laquelle est plus rapide, et si je serai motivé, je réfléchirai à quel sous-programme est plus rapide en étant intégré au programme principal ou en étant un sous-programme proprement dit, sachant que j'ai 6 sous-programmes, ça me fait 26=64 possibilités à tester (donc c'est vraiment si je suis motivé, et me connaissant, ça risque fort).
|
 |
PierrotLL Administrateur

 Messages: 1228 Calculatrice : Graph 85 | Message posté: 05-03-2010 à 19:17  
Teste d'abord avec le plus gros et le plus petit sous-prog. Si le résultat est identique (gain ou perte de temps), inutile de faire les autres tests.
 |
 |
lolotone Membre

 Messages: 30 Calculatrice : Graph 35 | Message posté: 05-03-2010 à 23:33  
Espérons que ça soit aussi simple, surtout si la rapidité de la fonction Return dépend de la position du Prog dans le programme appelant : un "gros" sous-programme peut peut-être être mis directement dans le programme principal s'il est appelé vers le début de celui-ci, alors qu'un "petit" sous-programme serait peut-être plus rapide s'il reste en tant que sous-programme s'il est appelé vers la fin du programme.
|
 |
lolotone Membre

 Messages: 30 Calculatrice : Graph 35 | Message posté: 16-03-2010 à 21:44  
Verdict :
J'avais un sous-programme de deux lignes. On va me dire pourquoi en faire un, s'il est si petit, mais c'est qu'il était appelé 17 fois. J'ai supprimé ce sous-programme et j'ai collé les lignes correspondantes à chaque appel (bon niveau mémoire c'est bof : + 500 octets) mais c'est plus rapide (et c'est uniquement ça qui m'intéresse, quoique si ça aurait pris 5ko en plus .. je ne l'aurais pas fait).
Sinon les autres sous programmes je les ai laissés.
Pour la vitesse de la fonction Return, j'avais un vieux programme de ~30ko, je me suis amusé a le retaper et j'ai mis des appels de sous-programme tous les ~5ko (7 en tout). Résultat c'est de plus en plus long mais la différence est négligeable par rapport à la même chose avec des Lbl .
sujet résolu .
|
 |