我有一個非常大而複雜的winforms應用程序。爲了減少啓動時間,我使用以下批處理文件預先生成了序列化程序集。爲什麼我的.NET啓動時間隨預生成序列化程序集增加而增加?
; delete any existing serialization assemblies
del *XmlSerializers.dll
; gen new serialization assemblies
for %%a in (*.dll) do sgen /assembly:%%a
; delete .deleted files (generated for assemblies which do not allow serialization)
del *.dll.deleted*
但令我驚訝的是,啓動時間實際上從4.6秒增加到了6.1秒 - 跳了1.5秒。無論是冷開始還是溫暖,這都是事實。
所以,問題:
- 爲什麼我的應用程序到位序列化組件啓動慢?
- 當應用程序生成序列化程序集時,是否有方法通過Perfmon或其他工具查看?
- 我正在生成序列化程序集嗎?
下運行,除非有人知道如何打開批處理文件語法突出顯示,我們只需將其保留爲「lang-none」 。 – Adam 2012-08-14 23:59:34
您生成了多少個序列化程序....如果數量很大....也許您可以將它們與ILMerge結合使用?你在64位Windows上運行嗎?您是否在項目中添加對預生成序列化DLL的引用? – 2012-08-15 01:56:41
您可以使用/ Type選項僅爲將被序列化的類型生成序列化代碼...而不是生成DLL中的所有公共類型。 – 2012-08-15 02:02:51