J'ai une application C# multithread, où la logique de base se trouve dans un gestionnaire d'événements Timer.Elapsed
. Le gestionnaire d'événements contient 2 boucles for
qui exécute un maximum de n * n = 5 * 5 = 25 times
.Application C# - Réduire l'utilisation du processeur
L'application fonctionne bien sur mon PC. J'ai couru VS 2010 Profiler
contre l'application et les moyennes d'utilisation du processeur à 20%.
Le testeur de l'entreprise dit que sur son PC, cette dernière saute entre 50% et 100% sur son PC. Cela cause des problèmes de performance pour lui.
- Y a-t-il quelque chose que je puisse faire pour y remédier?
- Que signifie vraiment l'utilisation élevée du processeur?
- Cela pourrait-il avoir un impact sur son PC?
- Est-il possible de dire à une application d'utiliser seulement
X
quantité de le CPU?
Toute aide serait appréciée.
Le nombre de fois que la boucle s'exécute signifie quelque chose dans le contexte de ce qu'elle exécute. Si vous exécutez une opération coûteuse 25 fois, cela pourrait être un gros problème. Si vous faites la somme de 25, cela n'aura pas d'importance. – rerun
À quelle fréquence le chronomètre se déclenche-t-il? Et attendez-vous que l'opération se termine avant de recommencer la minuterie, ou continuez-vous à relancer vos boucles, que la précédente soit terminée ou non? –
Le temporisateur s'exécute toutes les secondes. Dans le gestionnaire d'événements timer, j'arrête le timer dans la première ligne de code et le redémarre dans la dernière ligne de code. Effectivement, cela crée juste un délai d'une seconde entre les événements. Le code entre le démarrage et l'arrêt de la minuterie, fait quelques calculs en mémoire sur un ConcurrentDictionary, qui peut croître assez sensiblement. Les calculs sont assez simples mais sont basés sur de grandes quantités de données. Aucune interaction avec l'interface utilisateur ne se produit dans ce gestionnaire d'événements. Par conséquent, je n'utilise pas DispatcherTimer ni BackgroundWorker. Le ConcurrentDictionary est mis à jour par divers événements. – c0D3l0g1c