Gibt es eine Performance-Overhead bei der Verwendung Raise in .NET?
-
02-10-2019 - |
Frage
Gibt es eine Performance-Overhead bei der Verwendung Raise in .NET ?
Ich habe einen Code, der folgenden ähnlich ist.
Dim _startTick As Integer = Environment.TickCount
'Do some Task'
Dim duration As Integer = Environment.TickCount - _startTick
Logger.Debug("Time taken: {0}", duration)
RaiseEvent Datareceived()
Der obige Code gibt Folgendes zurück:
Time taken: 1200
Time taken: 1400
Aber wenn ich entfernen RaiseEvent
es zurückgibt:
Time taken: 110
Time taken: 121
Ich bin überrascht, dass der RaiseEvent
nach der Protokollierung der Zeit genommen, aufgerufen wird. Wie funktioniert es Auswirkungen auf die Gesamtzeit genommen?
Ich arbeite an .NET Compact Framework .
In dem Eventhandler Ich hatte eine MsgBox gegeben. Wenn ich das Meldungsfeld entfernt, wird es jetzt Zeit, als 110 genommen zeigt, 121, usw., das heißt, weniger als 500 Millisekunden. Wenn ich die Msgbox zurück in Eventhandler legte es zeigt 1200, 1400, etc., die mehr als eine Sekunde ist.
Ich bin mehr überrascht jetzt (das Ereignis nach dem Protokollieren Teil angehoben).
Lösung
Versuchen Sie, das gleiche in einer Konsolenanwendung verwenden. Eine Konsolenanwendung verwendet weniger Ressourcen.
Hier können Sie das genaue Problem identifizieren.