Laden...

C# Win Form Projekt, debug kompiliert startet doppelt so schnell wie release kompiliert

Erstellt von Dave76 vor 12 Jahren Letzter Beitrag vor 12 Jahren 2.902 Views
D
Dave76 Themenstarter:in
6 Beiträge seit 2012
vor 12 Jahren
C# Win Form Projekt, debug kompiliert startet doppelt so schnell wie release kompiliert

Hallo,

ich habe ein ganz normales Windows Form Projekt erstellt.
Jedoch musste ich feststellen, wenn ich die DEBUG Version
manuell starte: Startet diese doppelt so schnell wie die RELEASE Version.

Alle Parameter sind auf Grundeinstellung. Habe dann auch mit den Paremtern experimentiert und immer wenn ich auf "DEBUG INFORMATIONEN GENERIEREN" schalte, starte diese Version dann deutlich schneller.

Woran kann das liegen und wie kann ich die Startzeit einer RELEASE Version beschleunigen?

Danke für eure Hilfe im voraus.

MFG
Dave

2.223 Beiträge seit 2005
vor 12 Jahren

Hallo Dave76,

ohne nähere Informationen zu deiner Applikation zu bekommen können wir alle nur Raten wo deine Bremse liegt.

Also raus damit: machst du irgendetwas ungewöhnliches?

Viele Grüße
Lars

D
Dave76 Themenstarter:in
6 Beiträge seit 2012
vor 12 Jahren

Hallo Lars,

eigentlich passiert nichts besonderes in meiner Appl. Was beim Start etwas dauert ist die Mehrsprachigkeit die ich auf alle Controls anwende. Und die Appl. ist sehr Grafiklastig. Ich benutze viele Bilder für Hintergründe, Buttons und sonstige Flächen. Es soll einfach schick aussehen.

Das merkwürdige ist halt nur die unterschiedlichen Ausführungsgeschwindigkeiten beim ersten Start der Appl. Debug ist doppelt so schnell wie Release. Für mich halt ein dummer Zustand, da ich meine Appl. aus dem Windows Kontext Menü starte und da ist es schon ein Unterschied ob der erste Start 2 oder 4 Sekunden dauert.

Wo kommt nur der Unterschied zwischen DEBUG & RELEASE her?

MFG
Dave

F
10.010 Beiträge seit 2004
vor 12 Jahren

Naja, die Software wird ja vor dem Ausführen per JIT compiliert.
Dabei werden auch je nach System u.U. Optimierungen durchgeführt.

Es ist z.b. möglich das durch viel Code-/PropertyInlining und sonstiges am Anfang bei der release Version mehr Assemblies geladen werden, als bei der Debug version.

Schalte doch mal bei der release Version die Optimierung aus.

Ansonsten kannst du ja auch die Debugversion benutzen, musst ja die PDB Dateien nicht mitliefern.

D
Dave76 Themenstarter:in
6 Beiträge seit 2012
vor 12 Jahren

Danke für deine Antwort, mit der Einstellung "Optimierung", ditt schau ich mir mal an. Gibt es eigentlich einen Profiler für Visual Studio wie im SQL Server? Dort kann man ja wunderbar die geschätze Ausführungszeit überwachen und sieht genau wo es Probleme gibt.

2.223 Beiträge seit 2005
vor 12 Jahren

Hallo Dave,

probiere es doch mal mit EQATEC es gibt auch noch einige andere

Einfach mal Bing befragen.

Viele Grüße
Lars

D
Dave76 Themenstarter:in
6 Beiträge seit 2012
vor 12 Jahren

Hallo Lars,

ich habe mittels Timespan mir mal die einzelnen Startaufrufe angesehen und musste feststellen das InitializeComponent() im DEBUG Modus 1,9 Sekunden benötigt und im RELEASE Modus 3,9. Alle anderen Aufrufen sind identisch schnell in der Ausführungsgeschwindigkeit. An dieser Stelle sollte doch eigentlich der Compiler keinen Unterschied erzeugen?

MFG
Dave

5.742 Beiträge seit 2007
vor 12 Jahren

das InitializeComponent() im DEBUG Modus 1,9 Sekunden benötigt und im RELEASE Modus 3,9

Kannst du das Problem noch weiter eingrenzen?
Zum Beispiel auf eine gewisse Methode, Codezeile etc.?

D
Dave76 Themenstarter:in
6 Beiträge seit 2012
vor 12 Jahren

Hallo,

im Konstruktor meiner Form wird InitializeComponent(); ausgeführt.

InitializeComponent(); steht in der Designer Klasse und enthält ja alle Definitionen meine Controls innerhalb der Form, mehr nicht.

Dennoch benötigt InitializeComponent(); im RELEASE Modus 2 Sekunden mehr um ausgeführt zu werden.

MFG
Dave

5.742 Beiträge seit 2007
vor 12 Jahren

Ja - aber kannst du (evtl. durch ein paar mehr Messungen oder besser durch einen Profiler) herausfinden, was genau innerhalb von InitializeComponent so lange braucht (z.B. Setzen einer DataSource, Zugriff auf Resourcen, ...)

D
Dave76 Themenstarter:in
6 Beiträge seit 2012
vor 12 Jahren

ja da bin ich gerade dabei, mich wundert ja nur das es dort überhaupt einen Unterschied zwischen DEBUG & RELEASE zu geben scheint. An dieser Stelle sollte es doch überhaupt keinen Unterschied geben und wenn doch dann sollte RELEASE doch deutlich schneller sein...

Ich melde mich wenn ich eine Messung habe aber trotzdem Danke.