2016-05-17 7 views
1

Ich verwende dotTrace, um einen Compiler zu profilieren, der einige Leistungsprobleme hat. Da der Aufruf-Stack ein Compiler ist, ist er stark rekursiv und das Falten in der Aufruf-Struktur-Ansicht macht die Dinge oft noch verwirrender als nicht.dotTrace: Wer ruft meine Methode an?

Wenn ich die Plain List-Ansicht nach Own Time sortiere, finde ich, dass eine bestimmte Methode einen großen Teil der Laufzeit verbraucht. Wenn ich mir den Code anschaue, kann ich nicht viel tun, um diese Methode schneller zu machen, aber ich glaube, dass das Hinzufügen von Memoization dazu führen kann, dass es nicht so oft aufgerufen werden muss. Das Problem ist, ich habe eine Menge Zeit herauszufinden, wo ich es hinzufügen soll.

Wenn Sie auf eine Methode im oberen Bereich in der einfachen Listenansicht klicken, werden Methoden angezeigt, die diese Methode im unteren Fensterbereich aufruft, was zwar nützlich ist, aber so weit ich es beurteilen kann die viel nützlichere Information von welche Methoden diese Methode aufrufen. Gibt es eine Möglichkeit, statistische Informationen darüber zu erhalten, damit ich weiß, wo ich mich auf das Hinzufügen von Memoization konzentrieren kann?

Antwort

3

In der Listenansicht All Calls klicken Sie einfach mit der rechten Maustaste auf Ihre Methode und wählen Open Current Method Instance (oder wählen Sie die Methode und drücken CTRL+T). Dies öffnet eine neue Registerkarte für Ihre Methode in dotTrace.

Klicken Sie in dieser neuen Registerkarte auf die Ansicht Backtrace auf der linken Seite, um alle Aufrufe dieser Methode anzuzeigen.

+0

Ehrfürchtig, danke! Es zeigt, dass 96% der Anrufe von einem bestimmten Ort kommen, so dass ich jetzt weiß, wo ich mich konzentrieren muss ... –

+0

Nach dem Hinzufügen von Memoization hat es die Laufzeit des gesamten Compile-Zyklus um mehr als 50% verringert, also nochmals vielen Dank! –