当前位置: 华文问答 > 游戏

为什么 Steam 删除 80G 的游戏只用了一秒?

2019-11-26游戏

额。。。计算机专业。

其他答案都关注在「删除文件只是删除索引」,是的,这没错,可我们平时手动删文件也是这样的,这跟STEAM为什么更快没有关系。

80G数据,如果是一个文件,你手动删除也是秒删,硬盘读写灯都不带亮的。

但是一般游戏都是一大堆文件,数据也不连续,有一大堆索引要去废弃,一秒是很难做到的。

我觉得steam是做了个异步删除,仅此而已。

对了,想起来steam在安装游戏时有个空间预分配,我怀疑这biaozi是申请了一整块连续空间,这样读写都会更快,索引大概也在索引扇区连续,这样也是快的因素。

11.26 感谢评论区的同学们。

有人提到了steam做了「固实」化存储,我找不到直接证据,因为这些文件看起来是散列的,最多是有些游戏把资源文件做了打包(你可以看到好几个GB的 .res 或者类似文件),这个跟steam没有关系。

关于下载前的预分配为什么慢,倒是有了点进展,其实是把游戏的所有文件展开并建立空间了,文件越是杂乱,肯定越慢,想象一下瞬间建立1万个带大小的文件。。。

这是一个相关答案:Steam 的下载原理是怎样的? - komm的回答 - 知乎 https://www. zhihu.com/question/3465 50500/answer/835306491

下图是下载情况,可以看出所有文件被展开建立了。一个4GB的游戏, 在800MB的安装数据下载完成前 ,4GB空间全部分配,并且 内部所有文件都按它该有的大小 建立了。下载完成(解压并写真实数据完成)后,这些文件被从downloading文件夹移动到common文件夹下面,就算完成了。

那么问题来了,为什么删除会那么快呢,由于我这个硬盘本身比较快,这点东西也秒删了,我来不及判断是否是异步删除,现在问题回到了原点。

我甚至怀疑steam里面删除真的比我手动删这个文件夹要快吗? ??验证这一点,需要找个慢速机械硬盘+下载80G的游戏(杰洛特高清版?给TA爱?)去。。。