Question

Lorsque je déplace mon application .Net Compact Framework sur la carte SD d'un périphérique Windows CE, le programme s'exécute plus lentement que de l'exécuter depuis la mémoire interne.

Je pensais que la mise en route pourrait être plus lente, mais c'est tout le programme. Il n'y a pas d'E / S sur la carte de stockage.

Pourquoi mon application est-elle si lente et comment le framework compact gère-t-il et charge-t-il les assemblys?

Était-ce utile?

La solution

Cela concerne la pagination à la demande. Votre application ne peut pas être exécutée directement à partir de la carte SD, car SD n’est pas un support exécutable, elle doit donc être extraite dans la RAM pour être exécutée. Windows CE ne disposant généralement pas de beaucoup de RAM, le chargeur ne tire pas toute votre application dans la RAM pour s'exécuter. Bien sûr, vos tas et piles seront dans la RAM, mais le code IL dans l'assembly lui-même est paginé si nécessaire. Elle est également paginée lorsque le système décide qu’elle n’a plus besoin d’une page spécifique.

Cette pagination peut avoir un impact sur les performances, même si je suis un peu surprise de constater qu’elle a un impact important, sauf si l’application elle-même est vraiment volumineuse (comme si vous aviez beaucoup de ressources intégrées extraites de l’assemblage). / p>

Autres conseils

Je suis d'accord avec le précédent "pagination à la demande". répondez par ctacke.

Une solution que vous pouvez essayer consiste à exécuter un programme de chargeur à partir de la carte SD qui copie votre fichier exécutable réel et les DLL d'une carte sur un disque dur, puis à exécuter votre programme à partir du chargeur. Lors des exécutions suivantes, le chargeur peut détecter si la version du disque dur est à jour et, le cas échéant, le lancer directement. Si la version du disque dur n'est pas à jour, le chargeur copiera à nouveau les fichiers périmés de la carte, puis exécutera le programme actuel.

Je l'ai déjà fait auparavant à partir d'un programme chargé sur un réseau distant et cela a très bien fonctionné.

Certains appareils planteront votre programme si l'application est sur la carte SD. Cela se produit lors de la mise sous tension d'un périphérique.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top