为什么大型文件比小型文件更好?


18

为什么控制台游戏开发人员使用大文件而不是PC上的小文件来存储游戏数据?内存中的流更少?需要多次访问文件树吗?还有其他原因吗?


也许是网络世界中的一个类似物:CSS Sprites
Nick T

CSS Sprites仍然使用旧的生锈的HTTP 1.1,这显然是一个令人讨厌的缺点,它显然使服务器无法通过单个连接发送许多资源。我希望有一个新的标准。
科斯

1
@Kos你的愿望已经批准,但遗憾的是还没有实现。
phihag 2011年

谢谢你!我想给他们烤蛋糕,以便他们更快地工作。
科斯

Answers:


37

不论平台如何,拥有一个大文件都会为性能带来一些好处。许多PC游戏也使用大文件。

  • 您可以手动缓存大文件中每个文件的偏移量,以避免需要读取文件系统目录条目(如果错过了缓存,则可能涉及打开的每个文件的多次查找)。

  • 您可以完全控制文件中数据的顺序,因此可以对其进行排列,以最大程度地减少缓慢查找的需求。

  • 通常,在单个大文件上,数据压缩比在单个文件上更有效。

请注意,避免寻道对于加快加载时间非常有效。典型的硬盘驱动器可能具有10ms的寻道时间和100MB / s的传输速率。假设您需要加载100个着色器文件,总大小为1MB。如果您必须为每一个进行一次搜索,则将它们全部加载都需要一秒钟。通过单次搜索,您正在寻找20ms来加载所有负载。

当然,并非所有控制台都具有硬盘驱动器,而光驱的搜索性能甚至更差,因此,这些着色器在搜索时可能需要5秒钟或更长时间才能加载DVD。此外,与PC相比,控制台用作缓存的内存要少得多,因此它们倾向于更频繁地加载数据。


9
很好的答案。到目前为止,以查找一个文件或多个文件为例。
William Mariager

1
此外,对于有竞争力的网络游戏,它是多,快(并使用了大量的磁盘空间),以验证该玩家没有用一个单一的巨大的文件被篡改,是不是比单独验证成千上万的小文件。
Trevor Powell

Google关键字:虚拟文件系统。还精心表示需要当前虚拟文件系统似乎表明,非虚拟文件系统,可以使用更多一些的抛光:(。
科斯

但是,这对于使用SSD的我们来说是不利的-我们无法将很少加载的内容移动到HDD上,因为所有游戏数据都在一个大文件中。说哇,我从没去过外域;我只是将文件移出SSD。并非如此可行的说...的CoD 4
米尔恰Chirea

6

除了亚当给出的很好的答案,我还要指出其他一些重要因素:

  1. 文件越少,部署应用程序就越容易。 如果要在移动平台(如iOS,Android或Windows Phone)上部署应用程序,则尤其如此。即使在Windows Phone的情况下,您仍然可以拥有任意数量的文件,因为用于部署的XAP文件只是一个zip存档,因此

  2. 将所有资产都放在一个文件中可确保它们全部被“分段”下载/读取。许多游戏玩家会在游戏开始前为您下载或解压缩资产带来明显的延迟,但是只要他们在游戏过程中遇到微妙的停顿,他们就不会放纵。当然,您可以将资源预缓存在RAM中,但是,“逐段”加载它们比按文件加载它们要容易得多。


我已经完成了Android和BlackBerry的开发,并且从未遇到过太多小文件的问题。直到现在,我还没有意识到更大文件的好处...
ADB
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.