【发布时间】:2011-11-01 19:44:50
【问题描述】:
因此,我在 Gamasutra 阅读了 John Carmack 的采访,其中他谈到了他所谓的“存在于内存映射文件中的实时 C++ 对象”。以下是一些引用:
JC:是的。实际上,我从中获得了很多好处……上一个 iOS Rage 项目,我们提供了一些新技术,这些技术使用一些聪明的东西来制作活的 C++ 对象,这些对象存在于内存映射文件中,由闪存文件系统支持在这里,这就是我想在 PC 上构建我们所有未来工作的方式。
...
我对自己的命令是,我希望在我们的 PC 平台上加载两秒的游戏,这样我们就可以更快地迭代。而现在,即使使用固态驱动器,您在加载时所做的所有事情都被支配,因此需要这种不同的纪律才能说“一切都将被抽取并用于相对地址”所以你只需说,“映射文件,我所有的资源都在那里,并且在 15 毫秒内完成。”
(完整采访可以在here找到)
有没有人知道卡马克在说什么以及如何设置这样的东西?我在网上搜索了一会儿,但似乎找不到任何相关内容。
【问题讨论】:
-
我认为他正在反序列化闪存中的 C++“不可变”对象。这总是有点复杂/有风险,因为您通常无法控制对象的内存/资源分配,除非您为对象“编写”代码。
-
你在做移动开发吗?当您需要能够快速切换到应用程序时,这听起来很有用,这在普通计算机上并不是一个真正的问题。
-
@Kerrek 对于任何平台上的游戏或任何需要从磁盘加载大量状态的东西都很有用。
-
@Justicle:毫无疑问,它对序列化有好处,但与使用真实系统内存相比,在桌面上会不会相对较慢?
-
这就是重点,它可以加快从磁盘加载到系统内存的速度。
标签: c++ memory-mapped-files memory-mapping