Timer dans Thread [Résolu]

cs_Jean_Jean 639 Messages postés dimanche 13 août 2006Date d'inscription 5 mai 2016 Dernière intervention - 17 févr. 2010 à 11:45 - Dernière réponse : cs_Jean_Jean 639 Messages postés dimanche 13 août 2006Date d'inscription 5 mai 2016 Dernière intervention
- 17 févr. 2010 à 16:57
Bonjour,
Je me pose une question sur l'optimisation du temps d'exécution d'une application.
Sur la fenêtre principale j'ai divers voyants témoins de l'état des données de mon application qui ne sont mis à jour qu'à intervalles réguliers (1 seconde ou lors d'évènements particuliers). Le temps de mise à jour n'est pas très important (inférieur à 200 ms). J'ai également une horloge analogique.
Les voyants et l'horloge sont commandés par timer d'une seconde.
Or lorsque je vais développer des demandes de requête, les calculs vont être longs et je souhaiterai optimiser mon temps micro pour cela.

Ma question est la suivante : Ai-je intérêt à mettre mes timers en Threads pour libérer des temps d'exécution de mon appli où est-ce que ça ne changera rien?
Je pourrai bien entendu suspendre mes timers des mises à jour, mais je ne le souhaite pas car les voyants d'état et l'horloge peuvent rester visibles.

Voilà, merci à ceux qui ont déjà réfléchi à ce problème et me donneront un avis.

Jean_Jean
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Caribensila 2684 Messages postés jeudi 15 janvier 2004Date d'inscription 26 juillet 2018 Dernière intervention - 17 févr. 2010 à 15:19
3
Merci
« le but est justement de capter un max de ressources du micro pour mon appli »

Dans ce cas, ce n'est pas un problème de Thread et de leur priorité.
Il te faut plutôt jouer sur la priorité de ton processus.

Un exemple :

if not SetPriorityClass(GetCurrentProcess, HIGH_PRIORITY_CLASS) then ShowMessage('Erreur dans le changement de priorité du processus.'); //Fait passer la classe de priorité d'une application à la priorié haute.


Mais attention ! On touche là aux réglages du multi-tâche Windows et le fonctionnement préemptif peut être perturbé par un abus de priorité. Et, sous Vista, c'est parfois carrément l'écran bleu !

Merci Caribensila 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de Caribensila
Caribensila 2684 Messages postés jeudi 15 janvier 2004Date d'inscription 26 juillet 2018 Dernière intervention - 17 févr. 2010 à 14:19
0
Merci
Salut Jean_Jean,

Les Threads ne permettent pas, en principe, d'optimiser le temps d'exécution. Je dirais même qu'ils le relentissent.
En effet, le but des threads est de permettre le multi-tâche. Tu imagines donc bien que si d'autres traitements se déroulent en même temps que le tien, il sera ralenti d'autant...

Il existe cependant un domaine peu étudié à ce sujet ( et ça me donne une idée à creuser , au passage :) qu'est la présence de plus en plus répandue des MultiCores. Selon moi, ils permettraient d'accélérer une application (aux dépens des autres, bien entendu. Car rien ne se perd et rien ne se crée).
Il existe un logiciel qui se vante de faire ça (Multicore Optimizer), mais qui ne tient pas ses promesses d'après les pros qui l'ont essayé.

Il reste que des Threads sont toujours susceptibles d'être optimisés. Et j'avais codé un petit soft dans ce but.
Commenter la réponse de Caribensila
cs_Jean_Jean 639 Messages postés dimanche 13 août 2006Date d'inscription 5 mai 2016 Dernière intervention - 17 févr. 2010 à 14:56
0
Merci
Merci Caribensila pour tes réponses.

Oui, j'ai vu ton code très intéressant!...
Effectivement, si je prends du temps microprocess d'1 côté, je le perds de l'autre. Mais peu importe, le but est justement de capter un max de ressources du micro pour mon appli. Je pensai que le fait de programer un haut niveau de priorité dans les threads pouvait me donner l'avantage.
Mais ça ne semble pas évident.
Donc pour l'instant, je gère mes timers en suspendant éventuellement leur exécution. De toute façon, je n'en suis pas encore là, c'était pour prévoir la structure en avance...
Reste qu'en tache de fond, le tread est intéressant!
Multicore optimizer, connait pas. Je n'ai pas envie de changer de langage de toute façon!
Affaire à suivre.

Jean_Jean
Commenter la réponse de cs_Jean_Jean
cs_Jean_Jean 639 Messages postés dimanche 13 août 2006Date d'inscription 5 mai 2016 Dernière intervention - 17 févr. 2010 à 16:57
0
Merci
Oui, c'est ce que je voulais dire! Je me suis mal exprimé, mais c'est parce qu'à prioiri, je pensai que la définition des priorité des procesus
étaient liés aux threads.
Ta proposition est peut-être une piste.
Si le réglage agit directement sur windows ce qui parait logique, il sans doute restituer sa valeur à la fin du processus. A moins que les choses se rétablissent d'elles-même lorsque mon processus est fini et détruit.
Bon, il faut que j'approfondisse la question.
Merci pour tes cogits, ça m'aide!
Jean_Jean
Commenter la réponse de cs_Jean_Jean

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.