Почему мое время запуска .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 должен проверить, действительна ли подпись