有没有一个库或好的方法可以让Java上的二进制保存游戏更容易或更快



我需要为我的游戏编写保存/加载逻辑,但我是Java新手,从未使用过二进制I/o。由于我还没有开始写作,有没有什么库可以让它更容易或更快(比如写作/阅读速度)?或者有什么好的方法可以保存下面的数据?

保存数据由大约2000个单位(数组Int(2000)、数组字符串(100)、数组布尔(500)、数组浮点(500))组成。

我知道它非常巨大。我曾经使用xstream来序列化它,在原始xml数据中,文件大小可能会变成100-200mb,而且保存速度也很慢。

对于I/O,存储设备通常是限制因素,使时间与文件大小成比例。使用二进制格式而不是XML无疑是朝着正确方向迈出的一步,因为它将减少文件大小和处理开销。

然而,进一步缩小尺寸可能是值得考虑的。例如,你真的需要int还是短裤就足够了?字符串会使用整个unicode字母表吗?还是可以使用单字节字符编码?

编写二进制数据文件的最简单方法是使用Java序列化,所以我会先尝试一下(当然,一定要使用BufferedOutputStream)。使用简单的DataOutputStream将在执行时间上更快一点,并导致文件略短(由于缺少类型描述符),但您必须自己编写字段。

一旦你做到了这一点,就值得衡量CPU还是I/O是限制因素(例如,在写文件时观察CPU的使用情况)。如果您有空闲的CPU和非常规则的数据,您可以通过动态压缩文件来加快写入速度,例如使用GZipOutputStream。

最新更新