如何将文件预加载到内存中?

如何将文件预加载到内存中?

好吧,这就是我的困境。我玩英雄联盟,它有一个加载屏幕,显示每个用户加载游戏的进度。因此,如果用户 A 拥有 Pentium 10 Super X-5000 十核处理器和 DDR15 RAM(虚构),而用户 B 拥有 20 世纪 60 年代的 2 kHz 处理器,则显示用户 A 的加载速度要快得多。我的一个朋友刚买了一台新电脑(比我的好),所以他的加载速度会比我的快。我想改变这种情况。

现在,我们来讨论一个更普遍的问题:

我有 4 GB 的内存。有什么方法可以将一些文件预加载到内存中(例如 forest.map 和textures\*.dds 等)?整个游戏文件夹有 2.7 GB,有时会因运行虚拟机而占用我的电脑空间。

我研究了 Windows 预取的工作方式,但我认为这不是我想要的。我也研究过 RAM 磁盘,但我认为我需要将游戏重新安装(并更新)到 RAM 中,而我实际上只想将 C:\x\y\z\texture1.dds 文件映射到内存中。

任何帮助深表感谢。

答案1

您几乎已经掌握了。启动 RAM 磁盘并将 Texture1.dss 文件复制到其中。现在将原始文件重命名为其他名称以便安全保存(您知道 RAM 磁盘并不那么可靠),然后在文件系统级别将该文件重新映射到 RAM 磁盘。哇,这太疯狂了,您是怎么做到的?其实不然,使用下面的程序很简单,而且有很多说明(不过您不需要全部阅读,它真的很简单),所以我就交给您了,如果您已经做到了这一点,那对您来说应该很容易。

http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html

不过,你可能需要关闭这些虚拟机,你需要确保在游戏运行时仍有足够的可用 RAM,并且你已加载 RAM 磁盘。如果你的内存已满,Windows 将不得不进行交换,这只会让一切变得更糟,所以请留意 RAM 使用情况。

答案2

买一台新电脑还是再等一段时间?加载速度越快,游戏体验越好吗?我认为不是。

回到问题:据我所知,如果不占用大量 RAM,游戏本身就无法使用,就无法实现这一点。你确定这都是预取造成的吗?也许游戏在你朋友的电脑上加载得更快,因为它有更快的 CPU 或更快的 RAM?

如果瓶颈在于数据从硬盘传输到内存的方式,那么最便宜的选择可能是更快的硬盘。但我对你说的游戏一无所知,也不知道将数据预取到内存中是否真的有帮助。

答案3

短期:SSD、新 CPU、更多 RAM 用于 RAM 磁盘解决方案。

长期来看:购买一台比你朋友更快的机器。

更大的图景:这真的那么重要吗?你愿意在加载屏幕上花多少钱?也许专注于在游戏中表现更好,并用它来讨好你的朋友 ;)

细节:

我建议买一块固态硬盘,把游戏文件放上去。固态硬盘的访问时间和突发读取速度更快,可以加快游戏的加载速度(当然,除非你的朋友也有固态硬盘)。

我不会创建 RAM 磁盘并复制文件。这样实际上会浪费大部分 RAM。游戏引擎仍会将文件从 RAM 磁盘读入 RAM。毕竟,RAM 磁盘的意义在于对最终用户透明。磁盘将显示为硬盘,游戏会将 RAM 磁盘视为硬盘。游戏引擎可能会内存映射文件,这可能不会过度滥用 RAM,但就我对 Windows I/O 子系统的了解有限而言,很难说。当然,您可以购买更多 RAM 并缓解此问题。

相关内容