J'ai une question sur l'utilisation de J'ai trois événements différents, on déclenche chaque seconde, une autre déclenche chaque minute et le dernier On déclenche toutes les demi-heures. P> est-ce meilleur, la performance sage, d'avoir une minuterie ou trois? p> Le moyen de le faire avec une minuterie est de vérifier Mon inquiétude est que l'utilisation de 3 minuteries crée trop de frais généraux. Ai-je tort et dois-je utiliser 3 pour la simplicité et la clarté ou est-ce que 1 minuterie est suffisamment minuteur? P> code: p> system.timers.timer code> dans mes applications .net.
ELAPSEDEventargs < / code> 'Signaltime et comparez-le à un temps déjà mesuré. Bien sûr, cela ne fonctionne pas bien si vous avez changé la dateTime, mais ce n'est pas le problème ici. Fondamentalement, chaque seconde, je vérifie si une minute ou une demi-heure est passée aussi ... p>
minutes-vertical code> et
Semihourspan CODE> sont des débutants réadonnants. p> p>
3 Réponses :
3 TIMERES Ajoutez très peu de frais générales par rapport à 1, et le code sera probablement bien meilleur (en termes de lisibilité et de maintenabilité) p>
Je pense que je pense que les chèques avec les personnes ont plus de frais généraux que trois minuteries, outre que vous puissiez entrer dans des situations étranges essayant d'utiliser une minuterie. P>
J'irais avec trois minuteries. P>
Cela ne va pas faire une grande partie de la différence de chaque sens. Quel que soit le nombre de minuteries, il n'y a qu'une seule boucle en arrière-plan. Au moins efficace, vous utiliserez 3 threads de la piscine de fil, mais il y a un lot em> disponible, donc ce n'est pas une grosse affaire. Si cela rend votre code plus simple à lire, je le dirais. P>
Gardez à l'esprit mais cela ne s'applique qu'à Quelques ressources supplémentaires: P>
http: //social.msdn.microsoft.com/forums/en-us/netfxbcl/thread/f9a1c67d-8579-4baa-9952-20B3C0DAF38A/ P>
threading.Timer code> (AKA
TIMERS.TIMER CODE>).
Forms.Timer Code> se comporte un peu différemment et il serait probablement préférable de s'en tenir à l'un de ceux qui ne fonctionne que sur le thread de l'interface utilisateur afin que vous puissiez passer à des problèmes de synchronisation. P>
D'accord, j'ai décidé d'aller avec la version de la minuterie la plus maintenue.
Cela ne répond pas à la question, mais une autre option consiste à avoir deux minuteries (une pour les secondes, une pour la minute / 30 minutes).
Est-ce mieux, la performance sage, d'avoir une minuterie ou trois code> que vous pouvez répondre à cela. Est-ce un goulot d'étranglement de votre application?
performances ne sera pas affectée b> de manière mesurable si vous utilisez une seule minuterie (deux si i> ne rendez pas votre code lent, avez-vous Profil b > C'est?) Et vous sauverrez les frais généraux (dans les ressources) de trois minuteries. Mais ce que vous avez à considérer est Comment exécuter b> que des opérations (si vous utilisez une seule minuterie, vous devrez peut-être les exécuter dans la piscine car Synchrone Exécution séquentielle B> peut retarder le dernier un trop de).
Dire combien cela affectera sur la performance, vous devez le profiler comme indiqué dans d'autres commentaires (OMI, cela n'affectera pas). Avoir trois minuteries créera des conditions de course susceptibles de devenir très grossières.
[Quel est le nombre maximum de minuteries qu'un programme peut créer?]: blogs.msdn.com/b/oldnewthing/archive/2009/08/27/9886147.aspx
@Lukas J'ai fait du profilage et j'ai constaté que beaucoup de temps ont été passés dans l'ELAPSEDHANDLER, mais cela pourrait être parce qu'il vérifie si les autres événements doivent également être tirés. J'ai lu quelque part que sous une minuterie commune est utilisée autant que possible, il est donc plus simple d'utiliser 3 minuteries. Postera mon code.