Ich habe gerade die Testversion von ANTS Performance Profiler from Red Gate heruntergeladen und untersuche den Code meines Teams. Sofort merke ich, dass es einen bestimmten Codeabschnitt gibt, von dem ANTS berichtet, dass er bis zu 99% CPU-Zeit verbraucht.Kann ein Aufruf von WaitHandle.SignalAndWait für Leistungsprofilzwecke ignoriert werden?
Ich bin völlig mit ANTS oder Leistungsprofil im Allgemeinen nicht vertraut (das heißt, abgesehen von Selbstprofilierung mit, was ich bin sicher ist extrem grob und verpönten Methoden wie double timeToComplete = (endTime - startTime).TotalSeconds
), so bin ich das Hantieren noch um mit der Anwendung und herauszufinden, wie es verwendet wird. Aber ich rief den Entwickler an, der für den fraglichen Code verantwortlich war und seine unmittelbare Reaktion war: "Ja, das überrascht mich nicht, dass es das sagt; aber dieser Code ruft SignalAndWait [was ich für mich selbst sehen konnte, dank ANTS] an benutzt keine CPU, es sitzt nur da und wartet auf etwas, was zu tun ist. " Er riet mir, diesen Code einfach zu ignorieren und nach etwas zu suchen, das ich sonst finden könnte.
Meine Frage: Ist es wahr, dass SignalAndWait KEINEN CPU-Overhead benötigt (und wenn ja, wie ist das möglich?), Und ist es vernünftig, dass ein Leistungsprofiler 99% CPU-Zeit benötigt? Ich finde das besonders merkwürdig, denn wenn es bei 99% liegt, würde das bedeuten, dass unsere Anwendung oft untätig ist, oder? Und doch ist seine Leistung in letzter Zeit eher träge geworden.
Wie ich schon sagte, ich bin wirklich nur ein Anfänger, wenn es um dieses Tool geht, und ich weiß nichts über die WaitHandle-Klasse. JEDE Information, die mir hilft, zu verstehen, was hier vor sich geht, würde geschätzt werden.