为什么我的SD卡上运行的程序如此之慢?

时间:2008-12-03 14:36:24

标签: c# performance compact-framework sd-card

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

我想,初创公司可能会慢一点,但这是整个计划。存储卡没有IO。

为什么我的应用程序如此缓慢以及紧凑框架如何处理和加载程序集?

3 个答案:

答案 0 :(得分:11)

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

这种分页会对性能产生影响,但我有点惊讶它是一个很大的影响,除非应用程序本身非常大(如果你有很多嵌入式资源,它正在退出程序集)。 / p>

答案 1 :(得分:1)

我同意ctacke先前的“请求 - 寻呼”答案。

您可能尝试的

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

我之前从远程网络位置加载的程序完成了这项工作,并且效果非常好。

答案 2 :(得分:0)

如果应用程序位于SD卡上,某些设备会使程序崩溃。它在挂起电源设备时发生。