2010-05-19 8 views
8

Estoy usando el perfil de cliente .NET 4.0 para mi aplicación y ejecuto un núcleo dual con 4 GB Ram y un disco duro rápido.Una aplicación .NET 4.0 de 110 kb necesita 10 segundos para un arranque en frío, ¡eso no es aceptable!

nada grande se hace al principio solo mostrando una lista genérica en una lista de wpf.

¿Cómo puedo hacer que el arranque en frío sea más rápido de mi ensamblaje?

He vuelto a hacer ahora un inicio en frío y ejecuto el archivo windowsapplication.exe en mi carpeta \ obj \ x86 \ Debug y mi disco duro funciona como el infierno y me tomó 10,5 segundos ???

¿Qué pasa?

El arranque en caliente después del frío tardó 1 segundo.

aplicaciones Java 6 no tiene ese problema, no es en absoluto sólo para comparar ...

ACTUALIZACIÓN:

elimino todos los métodos que leen datos cuando se crean mis ViewModels.

Todavía quedan 10 segundos para aparecer. No es un problema leer datos de la RAM. El problema es el disco duro muy ocupado que nunca ha sido tan ruidoso excepto ejecutar una aplicación wpf .net 4.0 ...

No hago referencia a dll`s de terceros.

Estos son los conjuntos de I Referencia:

Microsoft.CSharp Presentation.Core PresentationFramework Sistema System.Core System.Data System.Xaml System.Xml System.Xml.Ling WindowsBase

ACTUALIZACIÓN 2:

creé ahora un proyecto .NET 4.0 WPF desde cero con sólo una ventana vacía y el fondo verde ;-)

El arranque en frío tomó 3 segundos (disco duro se llena mucho)

entonces corro mi otra WPF aplicación que tardó 10 segundos más. Ahora solo necesita 1,5 segundos para aparecer en la pantalla.

La situación es ahora me queda claro:

Mi aplicación como nada de lo que podría hacer más lento. Es solo la PRIMERA aplicación wpf cargada o no.

Creo que lo haré como ADOBE Reader. Ponga un acelerador de aplicaciones ... en el autostart siendo una pequeña aplicación de wpf hola mundo ...

+3

Debería ser más específico sobre lo que hace su aplicación al inicializar. Podría escribir una aplicación WPF que sea más pequeña y calcular factoriales durante la inicialización, que comenzaría incluso más lento que el tuyo. – Venemo

+0

@Venemo: Como dije antes, solo ato una Lista genérica de 30 entidades codificadas a un DataGrid. ¡Sin acceso a la base de datos! – msfanboy

+0

¿Qué sucede si saca DataGrid de la ecuación ... –

Respuesta

4

Puede usar ngen para precompilar sus ensamblajes. Eso debería ayudar.

Editar: Puede haber una cosa que puede ayudar. Si se trata de una aplicación wpf basada en la plantilla de "nueva aplicación wpf" en Visual Studio, su aplicación hará referencia a un conjunto de ensamblajes que usted no puede usar.Intente eliminar todos los ensamblajes no utilizados de sus referencias de aplicaciones y vea si eso ayuda.

+1

Podría, aunque creo que algunos o todos los códigos JIT se almacenan en caché en la primera ejecución. –

+7

Debería, pero la pregunta es cómo hacer que el arranque en frío (es decir, la primera vez que se ejecuta la aplicación) sea más rápido. Siempre y cuando la aplicación no haga mucho en el inicio, no creo que haya nada más que ngen que ayude. –

+3

Ngen en una aplicación pequeña hace que el arranque en frío sea más lento. Mayor DLL para cargar. –

1

Eso no es normal, ¿realiza conexiones a una base de datos o a alguna red? ¿Esperando algún recurso del sistema operativo?

1

. Las aplicaciones .Net comienzan lentamente en comparación con las aplicaciones compiladas originalmente, pero eso suena excesivo. Procmon puede ofrecer una idea de lo que está esperando.

Cuestiones relacionadas