Laden...

DIA SDK Performance von IDiaSymbol

Erstellt von bonzy vor 13 Jahren Letzter Beitrag vor 13 Jahren 942 Views
bonzy Themenstarter:in
157 Beiträge seit 2008
vor 13 Jahren
DIA SDK Performance von IDiaSymbol

Guten Tag zusammen,

aktuell arbeite ich an einem kleinen Tool (WinForms GUI), dass C++ Source Code anhand von Visual Studio PDB-Dateien analysiert und grob gesehen alle für mich nützlichen Methoden und Funktionen ausliest. Dazu benutze ich das DIA SDK und arbeite somit mit COM-Objekten.

Das Problem an der Geschichte ist eindeutig die Performance: Ich laufe über ca. 200 PDB-Dateien und finde darin um die 1 Mio. Methoden. Der komplette Prozess dauert jetzt allerdings zwischen 5 und 10 Minuten und das liegt hauptsächlich (basierend auf Tests von mir) an der Arbeit mit dem Interface IDiaSymbol. Methoden wie "findChildren" oder "findLinesByAddr", an denen ich nicht vorbeikomme, ziehen auf diese Anzahl an Dateien einfach sehr viel Zeit.

Als Information hier noch ein Link zu MSDN: Debug Interface Access SDK.

Mir fallen ehrlich gesagt keine guten Ansätze ein, wie ich die Performance steigern könnte, da es nunmal stark an Code liegt, der nicht von mir geschrieben ist bzw. optimierbar wäre. Multithreading fällt so gesehen auch flach, weil es ein COM SDK ist. Zumindest ist mir keine Methode bekannt, wie ich damit arbeite, ohne den RCW abzuschneiden.

Ich bin über jede Hilfe und Ansätze dankbar. Wenn es nicht ohne Code geht, liefer ich diesen nach, auch wenn ich wie gesagt der Meinung bin, dass es daran nicht liegt.

Gruß

Edith: Bin durch Zufall darauf gestoßen, dass der RCW nicht aufgrund des Multithreadings, sondern durch einen zu frühen Release des COM-Objekts zustande kommt. Ich hatte diese Threading Geschichte in dem Zusammenhang noch im Hinterkopf und bin direkt von dieser Ursache ausgegangen, aber zumindest das scheint jetzt zu funktionieren. Wenn noch andere Vorschläge reinkommen, nehme ich diese natürlich auch gerne. 😃

Bedankt fürs Verschieben.