Ich versuche die Zeit zu messen, die benötigt wird, um einen Code auf meinem Produktionsserver auszuführen. Ich möchte diese Informationen in Echtzeit überwachen, also habe ich beschlossen, Performance Analyzer zu einem Whizz zu machen. Ich verstehe von MSDN , dass ich sowohl eine AverageTimer32- als auch eine AverageBase-Leistung erstellen muss Counter, die ich ordnungsgemäß habe. Ich inkrementiere den Zähler in meinem Programm, und ich kann den CallCount auf und ab gehen, aber die AverageTime ist immer Null. Was mache ich falsch?
Hier ist ein Ausschnitt des Codes:
%Vor%Zunächst ist das Anhängen an Leistungsindikatoren ziemlich teuer. Sie sollten also versuchen, globale Instanzen für sie verfügbar zu halten, statt sie jedes Mal zu öffnen und zu schließen.
Sie scheinen die richtige Idee zu haben, das ist genau das, was wir in unserem Code zur Leistungsüberwachung tun. Wie auch immer, wir machen .NextValue nicht unmittelbar vor der Aktualisierung dieser - also würde ich versuchen, das anfänglich zu beenden.
Sind Sie auch sicher, dass Environment.TickCount - init_call_time nicht so klein ist, dass es 0 ergibt? Environment.TickCount hat keine große Auflösung, die System.Diagnostics.Stopwatch Klasse hat viel bessere Genauigkeit.
Angenommen, Sie sind kein Multi-Threading, dann sollte dies
sein %Vor%Wenn Sie in einer Multithread-Situation sind, dann:
%Vor%Tags und Links c# performance