Obligement - L'Amiga au maximum

Dimanche 20 août 2017 - 21:05  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Hit Parade
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

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

 · Articles in english
 · Articles in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


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


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


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


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]