Почему мое время запуска .NET увеличивается с помощью предварительно сгенерированных сборок сериализации?

У меня довольно большое и сложное приложение 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*

Однако, к моему удивлению, время запуска фактически увеличилось с 4.6 секунд до 6.1 секунд - прыжок 1,5 секунды. Это подтвердилось, было ли холодное начало или тепло.

Итак, вопросы:

  • Почему мое приложение запускается медленнее с сборками сериализации?
  • Есть ли способ увидеть через Perfmon или какой-либо другой инструмент, когда приложение генерирует сборки сериализации?
  • Я генерирую сборку сериализации правильно?

Ответ 1

Вы должны просмотреть свое приложение, чтобы узнать, почему время запуска увеличивается. Perfview будет хорошим инструментом для этого.

Если в JITtting слишком много времени, рассмотрите NGEN ваше приложение. Если загружено слишком много страниц, подумайте об использовании оптимизации mpgo, если вы работаете в .Net 4.5

Ответ 2

Так как .NET должен проверить, действительна ли подпись