2012-08-14 3 views
10

Ich habe eine ziemlich große und komplexe Winforms-Anwendung. In dem Bemühen, die Startzeit zu reduzieren, generierte ich Serialisierungsassemblys mithilfe der folgenden Batch-Datei.Warum steigt die .NET-Startzeit mit vorgenerierten Serialisierungsassemblys?

Zu meiner Überraschung stieg die Startzeit jedoch von 4,6 Sekunden auf 6,1 Sekunden - ein Sprung von 1,5 Sekunden. Dies galt, ob es ein Kaltstart oder warm war.

Also, Fragen:

  1. Warum wird meine app langsamer mit Serialisierungsassemblys anstelle starten?
  2. Gibt es eine Möglichkeit, über Perfmon oder ein anderes Tool zu sehen, wenn die App Serialisierungsassemblys generiert?
  3. Generiere ich Serialisierungsassemblys korrekt?
+0

laufen, es sei denn, jemand weiß, wie man die Syntax-Hervorhebung von Batch-Dateien aktiviert, wir müssen sie als 'lang-none' zurücklassen . – Adam

+0

Wie viele Serialisierer erzeugen Sie ... wenn eine große Anzahl ... vielleicht könnten Sie sie mit ILMerge kombinieren? Laufen Sie auf 64bit Windows? Fügen Sie in Ihrem Projekt Referenzen zu den vorgefertigten Serialisierungs-DLLs hinzu? –

+0

Können Sie die Option/Type verwenden, um nur den Serialisierungscode für den Typ zu generieren, der serialisiert wird .... und nicht alle öffentlichen Typen in Ihrer DLL. –

Antwort

0

Da .NET muss überprüfen, ob die Signatur gültig ist

+6

Sie sagen also, dass es schneller ist, Serialisierungsassemblys zu generieren, als nach einer gültigen Signatur zu suchen? – AngryHacker

+0

Sehen Sie, es klingt einfach verrückt, wenn Sie es so sagen. –

+0

@Cole Gibt es eine Referenz, die Sie angeben können, um dies zu bestätigen? –

1

Sie Ihre Anwendung profilieren sollte, um zu sehen, warum die Startzeit nimmt zu. Perfview wird ein gutes Werkzeug sein, um dies zu tun.

Wenn zu viel Zeit in JITtting verbracht wird, betrachten Sie Ihre Anwendung als NGEN. Wenn zu viele Seiten geladen werden, sollten Sie die Option mpgo optimization verwenden, wenn Sie unter .Net 4.5

Verwandte Themen