C#compact框架中的单文件虚拟文件系统

时间:2012-07-23 05:46:12

标签: c# database windows windows-phone-7 xna

嘿我正在尝试创建一个可以取代我当前存储系统的存储系统。

我需要能够以相当快的速度每秒保存10个文件,几乎没有垃圾创建,其方式与使用.Net紧凑框架的WP7,XBOX和PC兼容。

最初在我正在制作的游戏中我只是将文件保存到磁盘,因为世界上不同地区有100个文件及其中的内容(我已尽可能将文件折叠在一起),在背景上线程这些文件被批处理,然后批量写出,同时也流式传输新文件。

虽然这对于电脑很好,但在手机上人们会经常退出游戏或转动手机,因此只有X档的Z档实际上会被保存,从而导致未知的保存文件状态。更糟糕的是,在Xbox上保存单个文件并将其提交到磁盘需要1秒钟,并且还会生成大量垃圾(每分钟大于30 mb),导致Xbox暂停1-3秒由于其“非常糟糕”的垃圾收集器运行每1mb分配的内存,因此每1-3秒一次。游戏中的其他所有内容都不会产生垃圾,并且会进行池化和缓存,因此这也是一个问题。

所以我随后迁移到使用单个文件来使用zip系统存储所有内容。这可以工作,但很少拉链文件只是腐败,因为我以一种从未设计过的方式使用它...基本上我在游戏开始时加载文件,然后在它位于内存流中时保存到它,然后每3-7分钟根据玩家进度将单个文件转储到磁盘。

所以基本上拉链文件(我试过了两次恭维)并没有做我需要的。有没有人知道是否存在任何其他可以做我需要的东西或对我应该如何建立自己的想法?

tldr;

所以简而言之,我需要一个

的系统
  • 单个文件
  • 可以驻留在内存中,只是定期提交到本地磁盘
  • 产生很少甚至没有垃圾
  • .Net Compact框架兼容(或使用源代码,因此我可以这样做)
  • 文件/结构编辑就地完成
  • 可靠第一,表现第二
  • 无需压缩或加密
  • 不需要只能加载文件的一小部分
  • 可以是一种数据库/不必模仿文件结构

与此问题类似Here

有人有什么想法吗?

0 个答案:

没有答案