代码之家  ›  专栏  ›  技术社区  ›  Louis Haußknecht

为什么我的程序在SD卡上运行得这么慢?

  •  4
  • Louis Haußknecht  · 技术社区  · 17 年前

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

    我想,启动可能会慢一些,但这是整个计划。存储卡没有IO。

    3 回复  |  直到 17 年前
        1
  •  11
  •   ctacke    17 年前

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

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

        2
  •  1
  •   Jason Jackson    17 年前

    我同意ctacke之前的“请求分页”回答。

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

    我以前在远程网络位置加载过一个程序,它运行得非常好。

        3
  •  0
  •   Malx    17 年前

    如果应用程序在sd卡上,某些设备会使程序崩溃。在设备上暂停电源时发生。