4

将我的 .Net Compact Framework 应用程序移动到 Windows CE 设备的 SD 卡时,该程序的执行速度比从内部存储器运行它要慢。

我想,启动可能会慢一些,但它是整个程序。存储卡没有 IO。

为什么我的应用程序这么慢,紧凑的框架如何处理和加载程序集?

4

3 回答 3

11

它与请求分页有关。您的应用程序不能直接从 SD 卡运行,因为 SD 不是可执行媒体,因此必须将其拉入 RAM 才能运行。Windows CE 通常没有大量的 RAM,因此加载程序不会将您的整个应用程序拉入 RAM 中运行。当然,您的堆和堆栈将在 RAM 中,但程序集本身中的实际 IL 代码会根据需要进行分页。当系统决定不再需要特定页面时,它也会被调出。

这种分页可能会对性能产生影响,尽管我有点惊讶它会产生很大的影响,除非应用程序本身非常大(例如,如果您有很多嵌入式资源,它会从程序集中提取出来)。

于 2008-12-03T14:45:35.803 回答
1

我同意 ctacke 之前的“按需寻呼”回答。

您可能会尝试的一个解决方案是从 SD 卡执行加载程序,将您的实际可执行文件和 DLL 从卡复制到硬盘,然后从加载程序执行您的程序。在随后的执行中,加载程序可以检测硬盘版本是否是最新的,如果是,则直接启动它。如果硬盘版本不是最新的,加载器将再次从卡中复制过期文件,然后执行实际程序。

我之前已经从远程网络位置加载的程序中完成了此操作,并且效果很好。

于 2008-12-03T15:38:56.990 回答
0

如果应用程序在 sd 卡上,某些设备会使您的程序崩溃。它发生在挂起开机设备时。

于 2009-01-11T22:59:01.550 回答