Frage

Ich fand dies in einigen Produktions Login-Code Ich war vor kurzem der Suche ...

HttpContext.Current.Trace.Write(query + ": " + username + ", " + password));

... wo Abfrage ist eine kurze SQL-Abfrage passende Benutzer zu greifen. Hat das irgendeine Art von Auswirkungen auf die Leistung? Ich gehe davon aus es sehr klein ist.

Auch, was ist der Zweck dieser genauen Art der Spur, den HTTP-Kontext verwenden? Woher nimmt diese Daten zurückverfolgt? Vielen Dank im Voraus!

War es hilfreich?

Lösung

Ja, es wird Auswirkungen auf die Leistung haben, wenn die TRACE bedingte Kompilierung konstant während Build definiert ist. Etwas zu tun, irgendeine Art von Auswirkungen hat:)

Als ob das nicht auf einer Anwendung einen erheblichen Einfluss hat. Es ist höchst unwahrscheinlich, dass es als Trace ist so konzipiert, ausgeführt werden und ist in vielen Produktionsanwendungen laufen. Es sollte nur ein Mißbrauch des Merkmals zu einem spürbaren Unterschied in der Leistung führen.

Aber wie immer, mich nicht trauen, vertrauen Sie den Profiler.

Andere Tipps

Ich habe nicht den Ruf Punkte für Kommentare vorhanden aber ich wollte eine schnelle Aussage über Jonathan Antwort machen. Die Zahlen, die wir haben scheinen gesehen zu zeigen, dass es keinen Sinn macht, nur eine Handvoll von String-Verkettungen zu verwenden Stringbuilder für. Der Aufwand für das Stringbuilder-Objekt schwerer wiegt als die Verkettung Geschwindigkeitsvorteil zu schaffen.

Der meist Performance-Verlust in diesem Stück Code ist in der Spur nicht, aber in der String-Verkettung durch die Verwendung des Operators +. Dies hat einige ineffiziente Speicheroperationen, die eine IO-Betrieb in Bezug auf die Leistung schlagen kann. Ich würde es ändern so etwas wie String.Concat oder die Stringbuilder-Klasse (oder string.Format für diese Angelegenheit) zu verwenden.

Trace-Nachrichten können an vielen verschiedenen Orten gehen. Sie können hinzufügen (oder entfernen) Tracelisteners für die Konsole, Visual Studio Debug-Fenster, Dateien oder das Ereignisprotokoll ein paar zu nennen. Sie können sogar Ihre eigenen bauen.

Sie können aber auch Trace konfigurieren, um nichts zu tun, wenn für Release zusammengestellt.

Damit kann die Auswirkungen auf die Leistung Spur der Verwendung von wild, den ganzen Weg von Null variieren bogging vollständig Ihre App nach unten, je nachdem, was die Zuhörer aktiv sind. Die meisten Zuhörer, haben aber über die Auswirkungen man erwarten würde. Es dauert etwa so viel Arbeit in einer Datei oder Datenbank oder der Konsole zu schreiben, und Trace nicht hinzufügen, dass viel Aufwand in Bezug auf diese I / O-gebundene Aktivitäten.

Und wenn Trace wird in eine Textdatei zu schreiben wird es mehr kosten als das Schreiben IMHO zu trösten

„Tracing fügt zusätzlichen Aufwand auf Anfragen und soll nicht für bereitgestellte Anwendungen aktiviert werden. Trace.Write () Aussagen können jedoch links in werden, weil sie ignoriert werden, wenn Tracing nicht aktiviert ist.“

http://msdn.microsoft.com/en-us/library/ ms972204.aspx

ich denke, Trace Quelle an seinem Schalter des Tracelevel sieht vor Botschaften an die Zuhörer weiterzuleiten. Also, wenn wir den Schalter der Standardwert Tracelevel zu halten, um „Fehler“, dann Overhead-Tracing nur so stark reduziert werden würde „Error“ Spuren Zuhörer geschickt würden.

nur eine Vermutung ... Ich habe noch nichts gemessen. Wird aktualisieren, wenn ich es tue.

2017 aktualisieren : scheint veraltet, aber eine ganz praktische Möglichkeit des Aufspürens / Log-Informationen an einen Browser / Remote-Zugriff ASPX-Seite in einer asp.net Anwendung werden.

https://msdn.microsoft. com / de-DE / library / z48bew18 (v = vs.71) aspx

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top