CALCULER LES PERFORMANCES DES THREADS

cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 - 3 mars 2008 à 16:17
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 - 13 mars 2008 à 10:04
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/45929-calculer-les-performances-des-threads

cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
13 mars 2008 à 10:04
@Cari
Vu que j' habite le Portugal, je vais devoir attendre qu' il sorte sur TF1!!! Sinon j' ai entendu parlé du film, j' ai même vu la bande annonce. ^^
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
12 mars 2008 à 22:30
@Mauricio
En parlant ciné, j'espère que tu iras voir "Bienvenue chez les Ch'tis" et que ça te rappellera de bons souvenirs. ;)

@Cirec
Palsambleu, ça me turlupine ce bug!
Ca pourrait (peut-être) venir du fait que tu as et avais un PC multicore, contrairement à moi.
Si c'est le cas, essaie de slasher la ligne "sleep(5);" dans la procédure "TMainForm.btnLancerThreadsClick(Sender: TObject)".

Si ça ne marche pas, je ne vois vraiment pas d'où ça pourrait venir ce bug.
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
12 mars 2008 à 14:31
Excuse moi mon bon maitre.
Tans mieux, j' ai pas à changer mon PC.
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
12 mars 2008 à 14:07
... Je parlais d'un FileTime, mon p'tit fillot ;)
GetThreadTimes() renvoie un FileTime, parce que ce serait trop simple avec un TDateTime.

The FILETIME structure is a 64-bit value representing the number of 100-nanosecond intervals since January 1, 1601.

typedef struct _FILETIME { // ft
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} FILETIME;
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
12 mars 2008 à 10:11
Que je trépasse si je faibli mais il me semble qu' un TDateTime = 0 pour la date 01/01/1899 ou alors je dois changer de PC aussi ^^
A+
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
12 mars 2008 à 02:06
Quel effroi ! ! !
Je n'avais pourtant pas oublié les oeufs de caille pourris...
- Dis, Jacquouille? T'avais pas un rôle dans "Les Visiteurs"? mdrrr

Pas facile de corriger un bug que je n'ai pas chez moi...
Et tu n'envisagerais pas de changer de région par hasard? (passe que je ne sais plus quoi faire, moi.)
Utilisateur anonyme
11 mars 2008 à 22:40
Désolé
---------------------------
Threadtimes
---------------------------
Nom Thread : Thread Idle
Date départ : 11/03/2008 22:34:43
Date fin : 01/01/1601 01:00:00
KernelTime : 0 ms.
UserTime : 8792,6432 ms.
GlobalTime : 8792,6432 ms.
---------------------------
OK
---------------------------

et j'ai, entre temps, changé de PC et de version de Delphi !!!
C'est peut être l'appartement qui est hanté ... ou moi Mdrrrr
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
11 mars 2008 à 21:35
Voilà. J'ai reposté.
Je teste la fin du Thread avec un PostMessage maintenant.
Ca devrait marcher.
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
11 mars 2008 à 19:16
Oh! Excuse-moi Cirec. J'avais zappé ton problème. :s
Mais avant tout, je crois que tu devrais penser à faire exorciser ton PC. VADE RETRO SATANAS ! :D

Plus sérieusement. J'avais effectivement rencontré ce bug quand je développais ce petit source. Le problème venait du fait que le thread n'était pas tout à fait terminé lors de la mesure avec l'API GetThreadTimes(). J'avais essayé diverses techniques pour déceler la fin d'un Thread, et je m'étais arrêté à la méthode OnTerminateProcedure() du Thread qui, chez moi, avait résolu le problème.
Je ne sais pas pourquoi ce bug ressurgit chez toi. Mais bon...
Je vais essayer d'autres techniques pour effectuer les mesures quand le Thread est vraiment terminé.
J'essaie, je poste et je te préviens...

PS: "01/01/1601" signifie que la Date De Fin = 0. La définition de TFileTime est assez étrange. C'est codé sur 64 bits et ça symbolise le nombre de centaines de nano-secondes (?) écoulées depuis le 1er janvier 1601 (?).
Donc il n'est pas étonnant que ça bugue avec ce type, assez ancien. ;)
Utilisateur anonyme
11 mars 2008 à 12:23
@Caribensila
Alors ... Bug ou pas bug sur les résultats du Thread Idle ??
Utilisateur anonyme
4 mars 2008 à 13:16
J'avais bien compris ton coup de gueule que je partage à 200% ...

Oui il fonctionne sous toutes les versions Windows il suffit de fournir GDIPlus.DLL avec ton application pour les Win98 et autres qui en seraient dépourvus

Oui c'est vrai que c'est mérité et tanpis si ça passe inaperçu
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
4 mars 2008 à 13:10
Merci Cirec, ça rejoint ce que j' essayai de dire: c' était une sorte de coup de gueule mal exprimé ...
En ce qui concerne ton compo, il m' interesse grave mais je ne suis pas sur mes compos pour le moment: je garde au chaud! Pour les "Requisite", ça marche sous tous les Windows ton compo?

Hop, j' en profite pour voter, c' est mérité. Ça passera inaperçu mais "les esclaves" (je me comprends) que nous sommes ont besoin aussi de motivation!!!
A+
Utilisateur anonyme
4 mars 2008 à 13:00
Petit bug sur les résultats du Thread Idle
la Date de fin reste toujours la même ... et en plus le Thread s'est terminé ily a 407 années ... lollllll
---------------------------
Threadtimes
---------------------------
Nom Thread : Thread Idle
Date départ : 04/03/2008 12:56:44
Date fin : 01/01/1601 01:00:00
KernelTime : 0 ms.
UserTime : 15125 ms.
GlobalTime : 15125 ms.
---------------------------
OK
---------------------------
Utilisateur anonyme
4 mars 2008 à 12:51
Je vois que tous le monde est logé à la même enseigne ...

pas ou peut d'intérêt pour des sources qui n'ont pourtant jamais étés publiés
ceci entrainant des rétentions sur des dépôts plus intéressants.

Je conserve ainsi sous le coude, depuis des mois, des sources que j'avais l'intention de déposer ici (Ex le cube que certains ici on vu) mais surtout un composant GDI+ qui s'intègre au TImage (sans installation) et qui ouvre tous les types d'images reconnues par Windows (depuis un fichier, une ressource, un stream, presse-papier) il peut les convertir dans différents formats (PNG GIF TIF JPG BMP avec Alpha Chanel ...) ,appliquer Filtres, Transparences, Rotations, Miroirs, Négatifs, luminosités, etc ... etc et bien sur on peut conserver les changements ;)

Caribensila à l'air de prendre cela comme une fatalité mais je pense au contraire que les mentalités on changées et ce depuis un certain temps et pas dans le bon sens. et je pense ne pas être le seul à avoir la même vision des choses.

Sinon c'est vrai que les Thread sont important et utiles à condition de s'en servir correctement (n'est ce pas Cantador lol) et surtout quand c'est justifié.

Encore une source bien utile qui n'est pas estimé à sa juste valeur.

@+
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
3 mars 2008 à 23:52
Cari les mains dans la gachée..
Qui l'eut cru ?
Donc, maintenant, on pourra t'offrir un fil à plomb !

@bientôt
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
3 mars 2008 à 22:43
Non, Môssieur Cantador! Je ne fais pas partie de ces privilégiés qui ne codent que de la musique et qui draguent la skieuse pour les copains (si vous voyez de qui je parle?).

Moi, je vais mettre les mains dans le ciment, pour changer un peu. Je suis opticien de formation, mais finalement je préfère le bâtiment ( en plus, c'est vrai! lol )

Promis, je reparlerai des Threads à mon retour. En particulier un Thread dont on conserve le contrôle d'exécution et qui n'est donc pas préempté à tous bouts de champ par le système d'exploitation... 'me reste juste à savoir à quoi ça pourrait bien servir. lol

@ plus!
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
3 mars 2008 à 21:58
Ca y est j'ai compris un thread çà permis de partir au ski
tout en tapotant sur le forum !

Merci Caribensila, car les thread c'est ma grande passion..
j'en utilise couramment dans mes applis et j'aimerai en savoir encore plus..
et je vais regarder ton truc de près.
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
3 mars 2008 à 21:53
« Va falloir trouver du temps pour étudier la chose »
Boaf... Tu feras ça entre la thèse et l'antithèse de ta prochaine dissert' de philo sans problème. Y'a vraiment rien de terrible quand on connaît les APIs à utiliser.

Pour l'optimisation, je crois bien qu'il y a encore matière à quelques tutos. Moi aussi, je ramasse ça et là des tactiques intéressantes. Il faudra qu'on en reparle quand on sera moins emm.. par les vicissitudes de la vie. ;)
T'es fou, ça m'intéresse drôlement !
Va falloir trouver du temps pour étudier la chose... t'aurais quand même pu poster pendant les vacances lol !

J'ai moi aussi un petit détail sur ton tuto d'optimisation qui serait intéressant d'étudier de plus près: le déroulement partiel de boucles, on y apprend pas mal (j'arrive à un ratio 1,5 : 1 avec une technique toute simple mais qui nécessite quelques précautions).

Ouais, pareil que ma source sur les bugs souris, je suis sûr que ça aidera qqn tellement je me suis cassé les pieds à trouve d'où pouvait venir une fuite de mémoire !
"Rien que ça, ça vaut de l'or, non?" => euh... à ce point là ? ^^

Voila, en attendant tes nouvelles aventures...
A+
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
3 mars 2008 à 17:16
Salut Mauricio,

A vrai dire, je ne m'attendais pas à beaucoup de commentaires. Ce n'est qu'un petit outil qui ne peut intéresser que les gens utilisant les TThreads et qui, de plus, éprouvent le besoin de les optimiser. Ca limite fortement le nombre d'intéressés, 'faut bien le reconnaître ! lol

Il y a des sources comme ça, de temps en temps. Comme un bug sur un évènement souris traité dernièrement par Florent, ou "les arcanes d'Indy" traité par un certain Mauricio, etc. :)
L'intérêt de ces sources ne se limite heureusement pas au nombre de commentaires. On est bien tranquillisé de savoir qu'elles sont là pour le jour où on se cassera le nez sur les problèmes traités.
Rien que ça, ça vaut de l'or, non?

En tout cas, merci Mauricio. C'est très gentil et ton commentaire me fait bien plasir, 'faut bien le reconnaître aussi ! ;)
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
3 mars 2008 à 16:17
Salut Cari,
je n' ai pas Delphi sous la main (juste Notepad mais j' ai vu ce que je voulais!) mais comme toutes les bonnes sources postées, celle-ci semble "désinteresser" (comprenez ici que les bonnes source demmandent un certains savoir et/ou un effort de compréhension) la majorité des membres de DelphiFr.

Pour ceux que cette source "répugne", sachez que les threads sont la base de tout appli (au moins un thread) et permettent en multithread, de ne pas bloquer la fenêtre principale à cause d' un long procédé par exemple.

Bien plus que calculer les performances des threads, cette source montre comment les utiliser et rien que pour ça, mérite d' être testée et téléchargée (aller hop, on se motive).

En tout cas moi, j' attends toujours avec impatiente tes sources (je sais que c' est frustrant de poster une bonne source sans avoir de commentaires) ...

A+
Rejoignez-nous