2010-03-22 10 views
3

Vous voulez Improvide Performance de l'application C# .Net ..Améliorer la performance des applications

Dans ma demande J'utilise un tiers Interop/dll pour traiter les fichiers .doc.

C'est une opération simple, Quelle entrée/sortie FilePath à Interop dll ... & dll va exécuter le fichier d'entrée de formulaire de texte.

Pour améliorer les performances, je l'ai essayé,

  1. Execute 2 therad pour traiter 32 dossiers. (Chaque processus de discussion 16 fichiers)
  2. Exécuter le code d'application en créant 2 nouveaux domaines d'application (chaque processus code AppDomain 16 fichiers)
  3. Execute code à l'aide TPL (Task Parellel Library)

Mais toutes les options prennent environ en même temps (32 sec) pour traiter 32 dossiers. Le traitement manuel a pris même 32 secondes pour traiter 32 fichiers.

Juste essayé une chose .. quand j'ai créé l'exemple exe pour traiter 16 fichiers comme entrée & Sortie pour référence Chemin donné dans TextBox.

..J'ouvre 2 instances exe à traiter. 1 exe a des 16 fichiers d'entrée & sortie créé avec le chemin du fichier d'entrée 2 exe a différents fichiers d'entrée 16 & sortie créé avec le chemin du fichier d'entrée

Lorsque je clique sur le bouton de démarrage des deux exe ..Il utiliser cpu 100% & Utiliser les deux core de manière significative & Processus Terminé dans les 16 secondes pour 32 fichiers. Pouvons-nous fournir ce type de prallisme explicite pour améliorer mon application Peformance?

+1

Avez-vous essayé de profiler l'application en détail? Si l'E/S est la principale source de lenteur, alors vous ne pouvez pas la résoudre par le parallélisme. – kennytm

Répondre

1

Le chemin à parcourir est de profiler votre application et de voir où elle passe son temps. Ensuite, vous pouvez planifier d'optimiser les goulots d'étranglement. Essayer d'optimiser sans savoir où est la partie lente n'est pas la meilleure utilisation de votre temps car vous poignardez dans l'obscurité, en espérant que quelque chose fonctionne. Découvrez où sont les problèmes et adressez-les directement.

Il existe plusieurs questions qui recommandent les profileurs. Découvrez this question et this question.

0

Le problème est peut-être que votre outil tiers synchronise d'une manière ou d'une autre les threads. Cela pourrait implicitement se produire s'il utilise des composants COM à un seul thread ("STA") pour faire le travail. Vous pouvez vérifier cela en cassant l'application lors de l'exécution dans le débogueur et en regardant les piles d'appels pour le thread de travail et d'interface utilisateur.

Questions connexes