HI Tous,Connexion Application Block - Le coût de Logger.Write()
Comment Logger.Write (logEnrty) peut être coûteux par rapport aux cycles CPU lorsque nous examinons les performances des applications.
HI Tous,Connexion Application Block - Le coût de Logger.Write()
Comment Logger.Write (logEnrty) peut être coûteux par rapport aux cycles CPU lorsque nous examinons les performances des applications.
Je vais supposer .NET/Visual Studio ici (donné le nom "Enterprise Library")
Il y a plus à la performance des applications que les cycles de CPU. Je ne suis pas familier avec l'enregistreur de la bibliothèque d'entreprise, mais je m'attends à ce que le plus grand succès de la journalisation ne soit pas dans les cycles du processeur, mais dans les E/S du disque. Si votre application est lourde, la journalisation l'affectera plus que si elle ne l'est pas.
Ma recommandation: si vous voulez/avez besoin de la journalisation, ajoutez-le de sorte qu'il soit facilement désactivé d'un point de vue global. Au lieu d'appeler la bibliothèque de journalisation directement, enveloppez-la dans votre propre classe, vous pouvez donc la désactiver facilement en l'enveloppant avec quelque chose comme une directive de prétraitement DEBUG. Et, afin de ne pas tenir votre thread d'exécution principal, faites votre exploitation forestière sur un thread différent (pas sûr si Enterprise Library est-ce que par défaut)
class MyLogger
{
public static void Log(string msg)
{
#if DEBUG
// Logging code here
#endif
}
}
Qu'est-ce que la directive de pré-traitement ci-dessus n'est-ce que bâtira les code enveloppé lorsque votre mode Visual Studio DEBUG est défini. Ce ne sera pas pour le mode RELEASE. Et, si vous avez VRAIMENT besoin de savoir, prenez un outil de profilage et obtenez des données réelles sur ce que vous coûte la journalisation.
Et que faire si vous avez besoin de trouver un problème spécifique dans la production? Et de préférence à distance: donner des instructions simples à l'utilisateur ou envoyer un fichier par email. Je conseillerais d'utiliser la méthode de test rapide (ou DI: lorsque logger est injecté - log, sinon - non): if (Logger.IsEnabled) // puis log. De cette manière, les performances sont plus ou moins bonnes et la consignation peut être activée/désactivée à tout moment. – VikciaR