2009-08-12 3 views
3

Wir haben ein Projekt für einen Client, der in VB.NET geschrieben ist. In einem der Projekte haben wir etwa 100 Module, die alle sehr einfach sind. Sie sind Erweiterungsmethoden, die zwischen Objekttypen konvertieren. Hier ist ein kleiner Ausschnitt:VB.NET SLOW Compile Time - Keine Festplatte oder CPU-Aktivität

Das Problem ist, dass dieses Projekt allein dauert 2 + Minuten zu bauen. Ich habe dislammon und filemon ausgeführt und es greift nicht auf das Dateisystem zu, während der Build zu hängen scheint. Die CPU-Auslastung ist während des Großteils der Ausführung ebenfalls niedrig. Nach ungefähr 2 Minuten ist der Build abgeschlossen und es gibt Festplatten- und CPU-Aktivität. Das Problem kann auf jedem Rechner reproduziert werden (bisher 4).

Ich ging so weit, das Projekt mit der vbc-Befehlszeile zu kompilieren, und das Problem ist auch da.

Gibt es etwas über VB.NET-Erweiterungsmethoden, die zu einer schlechten Kompilierzeit führen? Das ist die einzige Funktion, die wir verwenden, dass ist komplexer als Looping/immer/Einstellung usw.

Antwort

0

Es ist schwer zu wissen, was das Problem auf einer kleine Probe wie diese beruhen würde. Es gibt nichts in sich Langsames über die Unterstützung von Erweiterungsmethoden im Compiler und wir haben zahlreiche Regressionstests in diesem Bereich. Wenn es einen Fehler gibt, ist es wahrscheinlich eine Kombination mehrerer Faktoren, die das Problem verursachen.

Wenn Sie die Zeit haben, bitte einen Bug zu diesem Thema bei

Datei Es macht den Fehler viel leichter zu untersuchen, ob Sie eine kleine Probe zur Verfügung stellen können, die das Problem reproduziert.

1

Performance-Probleme, die keine signifikante CPU oder Datenträger-Aktivität zeigen, sind immer im Zusammenhang mit Netzwerk wartet, entweder die Netzwerkleistung selbst oder, was wahrscheinlicher ist, auf anderen Systemen für Antworten von Dienstleistungen warten. Jetzt sehe ich nichts in dem Beispiel, das dieses Problem haben sollte, also muss ich annehmen, dass das Problem von etwas anderem kommt, entweder in Ihrem Projekt oder Ihren Projekteinstellungen oder Ihrer VS-Umgebung oder Ihrer Systemumgebung.

Sie könnten versuchen, ein Werkzeug zu bekommen, die alle Netzwerk-Anrufe von Ihrem System überwachen und sehen, was los ist.