我有一个文字游戏,我的应用程序需要在应用程序开始之前加载一个超过225,000个单词(2.6 MB)的文本文件。换句话说,每次用户启动应用程序时都会执行此过程。我的问题是,加载单词列表一次(用户第一次播放)然后将其保存到核心数据以供每次使用后更好吗?加载列表与阅读列表相比,性能会有显着提高吗?
在我看来,这是一个没有道理,保存到核心数据肯定是最好的方法。
我很想知道其他人对这两个选项之间的比较的看法。
答案 0 :(得分:0)
你的"毫不费力"答案确实是对的。我无法想象你会出于任何有意义的原因将这些内容保存在内存中。
我建议在您的应用包中加入预先填充的Core Data商店,并在首次启动时将此文件复制到应用程序沙箱中。在开发过程中,您仍然可以使用文本导入功能。
使用NSFetchedResultsController,您可以以非常简单有效的方式从列表中生成一个真正随机的单词。内存和性能都不是问题。
答案 1 :(得分:-2)
如果内存使用是一个问题,那么您可以使用mmap(2)
来启用操作系统来决定是否将单词列表保留在内存中。内存映射文件允许内核丢弃单个内存页面,然后在系统内存压力下重新加载它们,但如果有足够的可用内存将整个文件保留在内存中。
相反,如果您将文件读入内存,那么当系统受到内存压力时,它必须写页面进行交换,这样会更加昂贵。