Domanda

Quando si sposta la mia applicazione .Net Compact Framework sulla scheda SD di un dispositivo Windows CE, il programma viene eseguito più lentamente rispetto all'esecuzione dalla memoria interna.

Ho pensato, l'avvio potrebbe essere più lento, ma è l'intero programma. Non è presente alcun IO sulla scheda di memoria.

Perché la mia applicazione è così lenta e in che modo il framework compatto gestisce e carica gli assembly?

È stato utile?

Soluzione

Ha a che fare con il paging della domanda. L'app non può essere eseguita direttamente dalla scheda SD, poiché SD non è un supporto eseguibile, quindi per essere eseguita deve essere inserita nella RAM. Windows CE non dispone in genere di molta RAM, quindi il caricatore non esegue l'intera applicazione nella RAM per l'esecuzione. Certo, i tuoi heap e stack saranno nella RAM, ma il codice IL effettivo nell'assembly stesso viene impaginato secondo necessità. Viene anche sfogliato quando il sistema decide che non necessita più di una pagina specifica.

Questo paging può avere un impatto sulle prestazioni, anche se sono un po 'sorpreso che abbia un grande impatto a meno che l'app stessa non sia davvero grande (come se si disponga di molte risorse incorporate che sta estraendo dall'assieme).

Altri suggerimenti

Sono d'accordo con il precedente "paging della domanda" risposta di ctacke.

Una soluzione che potresti provare è eseguire un programma caricatore dalla scheda SD che copia i file eseguibili e le DLL effettivi dalla scheda al disco rigido, quindi eseguire il programma dal caricatore. Nelle successive esecuzioni il caricatore può rilevare se la versione del disco rigido è aggiornata e, in tal caso, avviarla direttamente. Se la versione del disco rigido non è aggiornata, il caricatore copia nuovamente i file non aggiornati dalla scheda e quindi esegue il programma effettivo.

L'ho già fatto in precedenza da un programma caricato in una posizione di rete remota e ha funzionato molto bene.

Alcuni dispositivi arrestano in modo anomalo il programma se l'applicazione è su scheda SD. Succede durante la sospensione del dispositivo di accensione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top