2012-08-14 13 views
10

Tengo una aplicación winforms bastante grande y compleja. En un esfuerzo por reducir el tiempo de inicio, pregeneré ensambles de serialización usando el siguiente archivo por lotes.¿Por qué mi tiempo de inicio de .NET aumenta con los ensamblados de serialización pregenerados?

; 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* 

Sin embargo, para mi sorpresa, el tiempo de arranque aumentó de 4.6 segundos a 6.1 segundos, un salto de 1.5 segundos. Esto era cierto tanto si era frío como templado.

Por lo tanto, las preguntas:

  1. ¿Por qué iniciar mi aplicación más lento con ensamblados de serialización en el lugar?
  2. ¿Hay alguna manera de ver a través de Perfmon o alguna otra herramienta cuando la aplicación genera conjuntos de serialización?
  3. ¿Estoy generando ensamblajes de serialización correctamente?
+0

, a menos que alguien sepa cómo activar el resaltado de sintaxis de archivos por lotes, tendremos que dejarlo como 'lang-none' . – Adam

+0

¿Cuántos serializadores está generando ... si es un número grande ... quizás podría combinarlos con ILMerge? ¿Estás corriendo en Windows de 64 bits? ¿Agrega referencias a las DLL de serialización pregeneradas en su proyecto? –

+0

Puede usar la opción/Type para generar solo el código de serialización para el Tipo que se serializará ... en lugar de todos los tipos públicos en su DLL. –

Respuesta

0

Debido .NET que verificar si la firma es válida

+6

¿Entonces está diciendo que es más rápido generar ensambles de serialización que verificar una firma válida? – AngryHacker

+0

Mira, suena loco cuando lo pones de esa manera. –

+0

@Cole ¿Hay alguna referencia que pueda citar para respaldar esto? –

1

Debe perfil de su aplicación para ver qué tiempo de inicio es cada vez mayor. Perfview será una buena herramienta para hacerlo.

Si pasa demasiado tiempo en JITtting, considere NGEN su aplicación. Si se cargan demasiadas páginas, considere utilizar la optimización de mpgo si se ejecuta en .Net 4.5

Cuestiones relacionadas