CODINGLISTINGS ★ TEST: VIDAGE MÉMOIRE ★

Test: Vidage MémoireCoding 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 10


sont 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
silence dans le manuel d'utilisation de l'AMSTRAD, à savoir :

  1. Evitez de déplacer les chaînes alphanumériques. Il est préférable d'agir sur les index des tableaux, donc de paramétrer le programme ;
  2. Pensez à affecter une chaîne nulle type A$ = "" aux variables désaffectées,
  3. Ne pas utiliser de tableaux surdi-mensionnés : il est toujours possible de fractionner le fichier en sous-fichiers sauvegardés sur disquette ;
  4. Concevoir les programmes importants en modules simples appelés par un programme "Talon" de sorte à libérer le plus de mémoire vive possible ;
  5. En dernier recours, forcer la remise en ordre par un FRE(" ") ou FRE("#”), d'effet indentique, juste avant la manipulation des chaînes.

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

  1. Lignes 100 à 160 : un tableau "largement" dimensionné puisque la place prise par le programme est faible. C'est pour l'OPENOUT.
  2. Lignes 200 à 220 : une chaîne de caractères bien dodue. C'est pour la remise en ordre.
  3. Lignes 290 à 370 : une boucle manipulant 1.000 fois une variable simple.
  4. Lignes 390 à 590 : l'édition des durées pour chaque remise en ordre.
    Après un RUN et 1 minute d'attente, le bilan des opérations est affiché.

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 :

  • Deleter les lignes de 10 à 220 ;
  • Renuméroter les lignes 230 à 320 et 340 à 630 en fonction du programme à tester ;
  • Insérer le tri en lieu et place de la ligne 330 ;
  • Eventuellement, modifier le test T2>10 ligne 350 pour tenir compte du temps de traitement.

POUR MEMOIRE :

La fonction FRE(0) donne la place mémoire disponible.

La fonction FRE("") ou FRE(" ") provoque la remise en ordre de la mémoire.

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

  • Analyse d'un ramasse poussière : LIST n° 4 Novembre 1984, Michel ARDITTI
  • Programmes utilitaires pour AMSTRAD : Editions SORACOM 1986, Michel ARCHAMBAULT

CPC n°19

★ EDITEUR: CPC Revue
★ ANNÉE: 198X
★ CONFIG: 64K + AMSDOS
★ LANGAGE:
★ LiCENCE: LISTING
★ AUTEUR: Patrick GUYON

★ AMSTRAD CPC ★ DOWNLOAD ★

File:
» Test-Vidage  Memoire    FRENCHDATE: 2015-11-18
DL: 80
TYPE: image
SiZE: 239Ko
NOTE:

Type-in/Listing:
» Test-Vidage  Memoire    LISTINGDATE: 2015-11-18
DL: 235
TYPE: text
SiZE: 2Ko
NOTE:

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding Src's » Pattern Generator (Amstrad Action)
» Coding Src's » Pink Shells
» Coding Src's » Vektorschrift
» Coding Src's » Créons des volumes
» Coding Src's » Graphic - Random Symmetrical Pattern Generators
» Coding Src's » Highlighter (Computing With the Amstrad)
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.7-desktop/c
Page créée en 309 millisecondes et consultée 1253 fois

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.