为什么我的.NET启动时间会因预先生成的序列化程序集而增加?

Ang*_*ker 10 c# performance serialization .net-4.0 winforms

我有一个非常大而复杂的winforms应用程序.为了减少启动时间,我使用以下批处理文件预生成了序列化程序集.

; 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*
Run Code Online (Sandbox Code Playgroud)

然而,令我惊讶的是,启动时间实际上从4.6秒上升到6.1秒 - 跳跃1.5秒.这无论是冷启动还是温暖都是如此.

所以,问题:

  1. 为什么我的应用程序在序列化程序集到位时开始变慢?
  2. 当应用程序生成序列化程序集时,有没有办法通过Perfmon或其他工具查看?
  3. 我正确生成序列化程序集吗?

Col*_*son 0

因为.NET必须检查签名是否有效

  • 所以您是说生成序列化程序集比检查有效签名更快? (6认同)