vendredi 31 mai 2013

LibraryTimer (I) [fr]

Le programme LibraryTimer v1.1 disponible sur Aminet est vraiment très intéressant pour notre sujet. En effet, il permet de connaître avec précision la fréquence d'utilisation de telle ou telle fonction de n'importe quelle librairie Amiga.

Rappel pour les débutants : les librairies sur nos Amiga sont toutes composées de plusieurs fonctions ayant chacune une utilité bien spécifique. Par exemple, la fonction R_CacheFlush de l'exec.library permet de remettre le code et le data cache du CPU à zéro. Pour ce qui nous intéresse dans cet article aujourd'hui, et bien les drivers Warp3D possèdent eux aussi des fonctions, et LibraryTimer permet de savoir combien de fois les programmes utilisant Warp3D (comme Quake2 par exemple, ou n'importe quel autre) ont appelé chacune de ses nombreuses fonctions disponibles. L'utilité pour le coder est bien sûr de retravailler déjà les fonctions les plus importantes, celles qui sont les plus souvent appelées. Bien évidement, ces statistiques varient suivant les jeux lancés et même peut-être aussi suivant la séquence du jeu. Enfin bref, ici pour le moment, nous prenons Quake2 et le tout début de l'aventure.

Son utilisation est très simple. Il suffit déjà de lancer le jeu :

Ensuite, revenir sous le Workbench avec Amiga-M et cliquer sur le programme LibraryTimer. Une fois celui-ci chargé, il faut tout d'abord choisir la librairie à examiner. Pour cet exemple, c'est WD3_AvengerLEMU.library en cliquant alors après sur "Patch" :

Revenir au jeu, et y jouer pendant une courte durée, comme deux minutes, afin d'obtenir un échantillon statistique. Re-switcher ensuite au Workbench et cliquez sur "Update". Voilà, le nombre de "Calls" s'affiche pour chaque fonctions (Offset) :

Déjà, la constatation criante est que peu de fonctions sont appelées pour la portion de Quake2 jouée. Les fonctions -$24 et -$40 ont été utilisées respectivement 571 ($23B en hexadécimal) et 572 ($23C) fois. Notez que "Time ticks" donne aussi la moyenne de temps qu'a prise la fonction a été exécutée : j'ignore pour le moment si ces résultats sont probants et/ou précis.

Une autre fonction a été utilisé encore bien plus souvent, la -$6C avec 6769 ($1A71) appels :

Mais il y a bien plus fort pour notre exemple ! La -$19E appelée 206 387 ($32633) fois !! Incroyable ! Et les -$1BC et -$1C2 environ 108 390 ($1A766) et 14 307 ($37E3) fois :

Là, c'est clair et net : c'est la -$19E qu'il faut optimiser le plus possible !! Elle est appelée par W3D_GetDriverTexFmtInfo de la Warp3D.library :

Bref, vous l'avez compris, LibraryTimer est très utile pour déjà localiser les fonctions utilisées, et surtout celles qui sont le plus souvent sollicitées.
   

Aucun commentaire:

Enregistrer un commentaire

Laissez vos commentaires ici :