Option A ist besser, denn:
Sie wahrscheinlich nicht wissen, was sich hinter dem Debug() -Methode gewickelt wird. Ist es ein lokaler Wrapper, den jemand hinzugefügt hat, um zusätzliche Logik zu verarbeiten, bevor er an den Debug() - Aufruf von log4net übergeben wird? Was macht log4net in dieser Methode? Sie verwenden möglicherweise die Quelle für log4net, um Ihre Assembly zu erstellen, hat ein anderes Teammitglied sie geändert? Ok, also haben Sie den Code persönlich auditiert, und es ist sehr schnell und Sie verwenden die Assembly von Nuget, damit Sie wissen, dass niemand in Ihrem Team es geändert hat. Was ist mit morgen, wenn eine neue Version von log4net fällt? Woher wissen Sie, dass jemand, der an einem log4net-Bug arbeitet, keinen Logging-Code eingeführt hat, der Ihren Server in all Ihren engen Schleifen schmilzt? Ist der nächste Praktikant, der Ihren Code kopiert und Änderungen daran anwendet, so sachkundig, wie Sie sind, und darüber nachzudenken, wie das Erstellen von ausführlichen komplexen Protokollaufrufen teurer als erwartet sein kann? Beachten Sie auch, dass unterschiedliche Appender möglicherweise unterschiedliche Protokollkosten haben. Was passiert, wenn jemand einen leichten schnellen Async-Appender für einen langsameren synchronen Appender austauscht?
Endergebnis: Code defensiv. Dies ist ein Boolcheck, der wirklich einfach und billig ist und einige unerwartete und knifflige Leistungsprobleme im Maßstab und unter Last verhindern könnte.Werden Sie jemals diesen Scheck sehen und sagen: "Ich bereue es wirklich, das zu schreiben"? Unwahrscheinlich.
Könnten Sie Ihre "vorherige Analyse" präzisieren? – Zonko
Greifen Sie einen Decompiler und gehen Sie durch IsXXX von Log4Net - Sie springen durch viele virtuelle Methodenaufrufe. –