Obligement - L'Amiga au maximum

Jeudi 28 mars 2024 - 11:55  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

Actualité (récente)
Actualité (archive)
Comparatifs
Dossiers
Entrevues
Matériel (tests)
Matériel (bidouilles)
Points de vue
En pratique
Programmation
Reportages
Quizz
Tests de jeux
Tests de logiciels
Tests de compilations
Trucs et astuces
Articles divers

Articles in english


Réseaux sociaux

Suivez-nous sur X




Liste des jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z,
ALL


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


Programmation : C - mesure de rapidité d'une routine
(Article écrit par Batchman et extrait d'Amiga News - juin 1991)


Ce mois-ci, je vous propose, et pour pas plus cher que d'habitude, de devenir en toute simplicité le Maître du Temps. Puisque le métier de maître d'école est de moins en moins prisé, le Maître de Bagdad ridiculisé, le maître du Monde menacé par le Maître de l'Univers, le Maître des Clefs embarqué par SOS Fantômes, le mètre soixante-dix dépassé par le mètre quatre-vingts, devenir Maître du Temps présente certains avantages.

La formule

La formule que je vais vous livrer vous permettra à votre guise de raccourcir ou de dilater l'écoulement du temps (pour un espace-temps donné, mais ça, vous vous en doutiez, bien sûr).

Pour arriver à ce résultat fabuleux, un tout petit programme dont l'objet est de mesurer la rapidité d'une routine. Je l'ai donc appelé : "Laboratoire Avancé de Recherches sur les Vitesses d'Exécution" ou LARVE (j'adore les noms pompeux et les sigles ridicules, mais je me soigne).

Ce programme appelle répétitivement un sous-programme de votre choix pendant un temps donné. Connaissant la durée du test et le nombre d'appels du sous-programme, on peut en déduire son temps d'exécution. Pourquoi ne pas chronométrer tout simplement la durée d'un appel de la routine ?

Là, j'avoue que, de votre part, cette question me surprend. Sans vouloir entrer dans des considérations trop techniques, il faut savoir que le temps se mesure avec une horloge. Eh oui, même dans un ordinateur, c'est plus pratique qu'une clepsydre ou un cadran solaire. Manque de chance, l'horloge de notre Amiga est de conception yankee et non pas helvétique. C'est dommage car Longines nous aurait peut-être fourni un outil plus commode que Commodore (sic).

Bref, n'épiloguons pas, l'heure récupérable par la fonction système "CurrentTime" n'est précise qu'au millionième de seconde (ou microseconde pour ceux qui ont fait des études). Bon, ça ne serait pas si mal si Commodore ne nous prévenait dans son ROM Kernel : l'heure n'est mise à jour que, au mieux, soixante fois par seconde, c'est-à-dire, s'il n'y a rien d'autre à faire, et généralement beaucoup moins souvent, dans le cas où l'ordinateur est occupé à autre chose.

Voilà pourquoi, si l'on comparait l'heure avant l'appel de la routine à tester et l'heure après, on aurait de grandes chances de trouver un résultat aberrant. Voire un écart nul si l'heure n'a pas été mise à jour pendant l'appel de la routine, ce qui est possible si la routine est courte. Et un temps d'exécution nul, cela n'a pas de sens (sauf si vous êtes équipés de la carte accélératrice Transputer Supraconducteur à Arséniure de Gallium de chez Batchman Computer mais çà, c'est pour le prochain Coin C).

Voyons maintenant le listing en détail

Une définition de macro (DUREE) permet de fixer la durée du test. Plus il est long et plus la mesure est précise mais ce n'est pas la peine de le faire durer deux heures, surtout si la routine est courte et si vous êtes pressé.

L'ouverture de la bibliothèque Intuition donne accès à la fabuleuse fonction CurrentTime, le moteur de notre laboratoire spatio-temporel.

Avant de passer à l'action, les agents de Mission Impossible mettent toujours leurs montres à l'heure. J'applique moi aussi ce secret de la réussite : pour être certain que le chronométrage sera correct, il faut commencer dès que l'horloge est mise à jour. Si l'on ne prenait pas cette précaution, l'heure de départ serait antérieure au départ réel et le calcul serait faussé. Ici, avec la séquence "A vos marques, Prêt, Partez", on est certain de bien connaître l'heure du départ puisqu'on ne commence qu'immédiatement après un changement d'heure.

Vient ensuite la séquence à chronométrer : c'est ici que vous insérez la routine que vous voulez tester. A titre d'essai, j'ai placé un printf("A") qui, vous pourrez le vérifier, dure 10535 ms soit à peu de chose près un centième de seconde.

Après la fin de la séquence à chronométrer, il faut vérifier que l'on n'a pas dépassé la durée du test. Si c'est le cas, on s'arrête.

Enfin, on calcule la durée de chaque cycle. C'est le temps qui sépare le début de la fin, divisé par le nombre de cycles et multiplié par un million pour obtenir un résultat en microsecondes. On enlève 70 à ce résultat. Pourquoi donc, je vous prie, hmmm ? Tout simplement parce que 70 microsecondes, c'est la durée d'un cycle "vide", la durée minimale des opérations à effectuer à chaque cycle pour vérifier que le test doit s'arrêter ou continuer.

Et hop, par ici le listing

C

Bien, je vais vous laisser vous amuser à optimiser vos petites routines. Naturellement, je précise que ce programme a été compilé sous Lattice et testé : il fonctionne. Enfin, n'oubliez pas que l'Amiga est une machine multitâche (je ne dis pas çà pour vous) et que, par conséquent, les temps que vous obtiendrez pourront éventuellement varier si d'autres processus tournent par derrière (et je ne pense pas forcément à un virus...).


[Retour en haut] / [Retour aux articles]