你有没有盯着电脑上那个文件的移动/复制进度条发过呆?
一开始它跑得飞快,像打了鸡血,让人感觉马上就结束了。但再一抬头——它卡在半路不动了,速度断崖式下跌,预估时间从 3 秒跳到 3 分钟,又跳到 30 分钟。
这到底是为什么???
虚假的“快速”
你看到的“一开始飞快”,其实是 假的。
操作系统的设计很聪明,它想让你觉得“我这电脑反应真快”。所以当你复制文件时,它干的第一件事不是立刻往硬盘里写,而是:先放到内存中,然后再慢慢处理。
这个内存缓冲区,就像你吃饭时先把菜夹到碗里,堆成一座小山。夹菜当然快,几筷子就堆满了。
电脑也是,文件数据先被扔进一个叫 高速缓存 的内存区域,系统马上跟你汇报:“搞定了一部分!”——其实只是完成了“夹到碗里”这个动作,根本没开始咽。
所以你看到的那个起步极速,其实是 内存写入速度,可能是每秒几百兆上G,快得离谱。
内存缓存满了,只能放入硬盘
问题来了,你碗就那么点大。
内存缓存通常也就几百 MB 到一两个 GB,当你复制几部电影或者一个游戏文件夹时,缓存几秒钟就会被塞满。这时候,系统终于得面对现实了——内存缓存不够了,只能存入硬盘。
而硬盘的实际写入速度,比内存慢得多。
机械硬盘:大概 100–200 MB/s 普通 SATA 固态:大概 300–500 MB/s NVMe 固态好很多,但跟内存比,还是慢一个数量级
所以当缓存写满那一刻,你看到的复制速度会 从虚高的“内存速度”突然掉落到“硬盘真实速度”。
“剩余时间”为什么波动
更烦人的是,掉速之后,进度条开始变得神经兮兮。
一会儿显示“剩余 5 分钟”,过两秒变成“剩余 2 小时”,再过两秒又变成“剩余 30 分钟”。
这不是系统故意耍你,是它在 估算剩余时间 时取错了参考值。
你可以这样理解:
系统算剩余时间,是基于 “我刚才跑得多快” 来猜“后面要跑多久”。 刚才在内存里跑得飞快时,它以为后面也一样快,就给了你一个 3 秒的预测。 突然掉到硬盘真实速度后,它又吓一跳,以为后面全要这么慢,于是给出了 2 小时的预测。 但实际上,文件复制过程中还会遇到大量小文件和小文件拆分的零碎时间,速度会一直波动。
为什么小文件比大文件更磨人?
大家会发现,复制一个10G的电影大文件,速度稳定且快;但复制一个几百MB的项目文件夹,里面塞满了几千个零碎小文件,光查找文件的过程就能卡好久啊!
这是因为硬盘最怕的不是搬运大文件,而是 “频繁换地址”。
每个文件,硬盘都得:
找到它该放的位置 写入数据 更新目录索引
一个大文件,就做一次这套动作。一千个小文件,就得重复一千次。大部分时间都花在了“找位置”和“登记目录”这些额外开销上,真正搬运数据的时间反而占比不高。
如何优化体验?
这个问题不能根除,但可以让体验好一点:
升级固态硬盘:NVMe 固态的缓存用完后,真实速度依然很快,掉速感知不强。 复制大文件时别盯着看:真的,越看越慢。起身倒杯水,回来它就差不多了。 零碎小文件先打包再复制:压缩成一个 zip,复制过去再解压,体感快得多。 接受现实:进度条就是现代版“薛定谔的猫”,在你确定它完成之前,它同时处于“快好了”和“还早呢”两种状态。
下次复制大文件,看到速度从“飞速”变成“龟速”,这时候就可以淡定了,内存缓存满了,现在才是真实速度。
这时候你不能再盯着看了,去刷会儿视频,干会儿别的吧,一会儿就好了。
夜雨聆风