★ CODING ★ LISTINGS ★ TEST: VIDAGE MÉMOIRE ★ |
Test: Vidage Mémoire | Coding Listings |
Tout programmeur ou utilisateur rencontre un jour, sans le savoir, le fléau des mémoires vives : la remise en ordre de la zone mémoire affectée aux variables ; (se reporter au livre de Michel ARCHAMBAULT: PROGRAMMES UTILITAIRES pour AMSTRAD, chapitre XVIII)Lorsque cette zone est saturée par des variables dites "provisoires", le micro effectue un nettoyage équivalent à un FRE(" "). Pendant ce temps, parfois important , la gestion du clavier et de l'écran est interrompue. Le phénomène est identique dans le cas d'un OPENOUT ou bien d'un OPENIN. L'ensemble de ces manœuvres suspend toutes les autres activités du micro pendant le temps nécessaire. Ce délai, indécelable bien souvent, peut représenter 20 % à 30 % du temps total d'exécution d'un programme s'il faut déplacer un grand nombre de chaînes de caractères. Pour dominer la situation, une démonstration s'impose. C'est le but du programme de TEST proposé. LES CHAINES DE CARACTERES Les variables alphanumériques ou chaînes de caractères assemblées à l'aide de CHR$, MID$, STR$ et celles obtenues indirectement tel que : 10 A$ = INKEYS : IF A$ = "" THEN 10sont stockées au sommet de la mémoire vive libre, juste au-dessous du HIMEM. Plus il y a de chaînes ou plus vous travaillez sur ces chaînes et plus la zone des variables augmente. Vérifiez-le en modifiant le contenu de la chaîne B$ du programme TEST, ligne 200, par : FOR I = 0 TO 25. Un programme demande donc le respect de certaines règles passées sous
LE CAS D'UN OPENOUT ou OPENIN A l'exécution d'une commande de ce type, l'AMSTRAD descend le HIMEM de 4Ko avec toutes les variables définies en tableau DIM. Celà prend du temps. Sur un CLOSEOUT ou bien CLOSEIN, ça recommence en sens inverse. Michel ARCHAMBAULT préconise de figer le HIMEM au plus bas en tête de programme mais la perte de 4 Ko est alors inévitable. Ce n'est pas toujours nécessaire heureusement. LE PROGRAMME TEST Il comporte
Selon les modifications apportées, vous constaterez que les temps morts peuvent varier du simple au double. Une autre possibilité du programme est de vous permettre de juger de l'efficacité d'un tri ; par exemple le tri "à bulle" d'un tableau. Dans ce cas, il suffit de :
POUR MEMOIRE : La fonction FRE(0) donne la place mémoire disponible. La fonction FRE(" La fonction ERASE A$ annule le tableau DIM A$. Faites le test en supprimant le REM en ligne 480. La fonction TIME comptabilise les arrêts supérieurs à 0,34 seconde pour tenir compte du temps d'exécution de la boucle (ligne 350). C'est fou comme ces micros peuvent se faire attendre... BIBLIOGRAPHIE L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko. |