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).

War es hilfreich?

Lösung

Versuchen Sie, das gleiche in einer Konsolenanwendung verwenden. Eine Konsolenanwendung verwendet weniger Ressourcen.

Hier können Sie das genaue Problem identifizieren.

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