Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » libprof: Mesure de temps et profilage pour gint
Lephenixnoir En ligne Administrateur Points: 24122 Défis: 170 Message

libprof: Mesure de temps et profilage pour gint

Posté le 17/07/2019 22:16

Ce topic fait partie de la série de topics du fxSDK.

Bien le salut, développeurs !

Cette bibliothèque est un outil pratique permettant de mesurer le temps du code dans un add-in, et d'identifier dans quelle partie du code l'add-in passe le plus clair de son temps. Grâce aux timers matériels, la précision des mesures est en-dessous de la microseconde et s'améliore encore avec l'overlock !

Pour pas oublier, voici le lien vers le dépôt Git :

Lien vers le dépôt Gitea, Lephenixnoir/libprof

Pour vous donner une petite idée, j'ai mesuré le temps qu'il faut dans gint pour :

• Effacer la VRAM (dclear)
• Afficher la VRAM à l'écran (dupdate)
• Dessiner un rectangle de 32×32 à une position favorable (rect1)
• Le même rectangle à une position défavorable (rect2)
• Dessiner un rectangle de tout l'écran, avec un effet identique à dclear (rect3)




On sait d'emblée que le point critique c'est l'envoi des données à l'écran. Heureusement, il y a un mécanisme permettant de le faire en arrière-plan donc ce délai ne nous gênera en fait pas. Et donc, pour améliorer les performances du dessin, il faut concentrer nos efforts sur dclear.

Dans un moteur de jeu cette lib permettra de trouver très facilement quelle partie du pipeline graphique prend le plus de temps. Dans un moteur 3D, on peut mesurer le temps de dessin des triangles versus celui de remplissage du z-buffer... autant d'informations qui sont utiles pour améliorer les applications critiques.

Une description détaillée de la façon de compiler et utiliser la lib est dans le README du Gitea. J'espère que ça vous sera utile !

Fichier joint


Cakeisalie5 En ligne Ancien administrateur Points: 1889 Défis: 11 Message

Citer : Posté le 17/07/2019 22:19 | #




Promotion ordinaire sur les inscriptions sur Planète Casio : en ce moment, c'est gratuit !

Mon blogBesoin d'utilitaires de transfert vers et depuis la calculatrice sous GNU/Linux ?
Ninestars Hors ligne Membre Points: 2461 Défis: 24 Message

Citer : Posté le 17/07/2019 23:47 | #


C'est formidable !
Je vais regarder ça
Lephenixnoir En ligne Administrateur Points: 24122 Défis: 170 Message

Citer : Posté le 13/10/2020 19:41 | #


Je sais qu'il n'y a pas beaucoup d'utilisateurs de cette bibliothèque (dommage d'ailleurs ), mais je signale quand même des nouveaux changements incompatibles.

Je viens de pousser une version dans laquelle la gestion des contextes ne se fait plus avec les entiers maladroits mais avec des variables qu'on peut créer localement ou globalement selon les besoins. Essentiellement, on obtient un contexte avec prof_t prof = prof_make() et on spécifie le nom de la variable au lieu de l'entier dans prof_enter(), prof_leave() et prof_time(). Accessoirement, ça réduit un peu l'overhead dans la mesure.

Par conséquent, le paramètre de prof_init() n'est plus nécessaire, et le premier paramètre de prof_exec() non plus. Mesurer le temps n'a jamais été aussi simple !

int elasped_time_us = prof_exec({
    my_code();
});

Tous les détails sont sur le README du dépôt qui explique comment utiliser la bibliothèque.
Mon graphe (19 Mars): (fxsdk#11 ; gint#27 ; (Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; ...) || (shoutbox v5 ; v5)

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 56 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd