Pregunta

Cuando muevo mi aplicación .Net Compact Framework a la tarjeta SD de un dispositivo con Windows CE, el programa se ejecuta más lentamente y luego se ejecuta desde la memoria interna.

Pensé, el inicio podría ser más lento, pero es todo el programa. No hay E / S en la tarjeta de almacenamiento.

¿Por qué mi aplicación es tan lenta y cómo el marco compacto maneja y carga los ensamblajes?

¿Fue útil?

Solución

Tiene que ver con la búsqueda de demanda. Su aplicación no se puede ejecutar directamente desde la tarjeta SD, ya que la SD no es un medio ejecutable, por lo que debe extraerse de la RAM para ejecutarse. Windows CE generalmente no tiene una gran cantidad de RAM, por lo que el cargador no extrae toda su aplicación en la RAM para ejecutarse. Claro, sus montones y pilas estarán en RAM, pero el código IL real en el ensamblaje en sí mismo se pagina según sea necesario. También aparece cuando el sistema decide que ya no necesita una página específica.

Esta paginación puede tener un impacto en el rendimiento, aunque estoy un poco sorprendido de que sea un gran impacto a menos que la aplicación en sí sea realmente grande (como si tiene muchos recursos integrados que está sacando del ensamblaje).

Otros consejos

Estoy de acuerdo con la anterior "búsqueda de demanda" respuesta por ctacke.

Una solución que podría intentar es ejecutar un programa cargador desde la tarjeta SD que copie su ejecutable real y las DLL de la tarjeta al disco duro, y luego ejecute su programa desde el cargador. En ejecuciones posteriores, el cargador puede detectar si la versión del disco duro está actualizada, y si es así, simplemente iníciela directamente. Si la versión del disco duro no está actualizada, el cargador volverá a copiar los archivos desactualizados de la tarjeta y luego ejecutará el programa real.

He hecho esto antes desde un programa cargado en una ubicación de red remota, y funcionó muy bien.

Algún dispositivo bloqueará su programa si la aplicación está en la tarjeta SD. Sucede mientras se suspende el dispositivo de encendido.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top