MacOS Finder 顺序拷贝速度更快 | AI生成和翻译
Question: 在 macOS 中,并行拷贝是快还是慢?例如,有 30 GB 的数据分布在 3 个文件夹中,是将它们放入一个大文件夹并拷贝一次快,还是同时(并行)拷贝这 3 个文件夹快?
Answer:
在 macOS 的典型实际应用场景中(使用 Finder),同时分开拷贝 3 个文件夹(并行)通常比将它们放入一个父文件夹中并只拷贝一次(单次操作内的顺序执行)要慢一些。
以下是原因以及适用场景:
- 将所有内容放入一个父文件夹并拷贝一次通常更快(或至少更稳定),原因如下:
- Finder 执行一次总体的准备阶段(扫描 metadata,构建文件列表)。
- 在 I/O 级别通常以更线性/顺序的方式处理拷贝 → 获得更好的持续 Throughput,尤其是在机械硬盘(HDD)、Network shares、USB 驱动器或存在大量文件时。
- Finder 内部的竞争和 Context switching 更少。
- macOS Finder(以及 APFS)往往不喜欢向同一目标卷(Volume)同时发起多个繁重的并行写入流。
- 同时启动 3 个独立的拷贝操作(并行)通常整体更慢,因为:
- Finder 会创建多个拷贝队列/工作线程。
- 这会导致更多的 Seeking(寻道)、并发发生更多的 metadata 操作,以及对磁盘带宽的竞争 → 在 HDD、USB Flash drives、Network shares,甚至在涉及大量小文件的 SSD 上表现得尤为明显。
- 实际用户报告和 Benchmark(即使是 2024–2025 年的最新数据)一致表明,向同一目标卷执行并行的 Finder 拷贝任务,其总 Throughput 通常低于单个大型顺序任务。
针对 30 GB / 3 个文件夹情况的建议:
- 最佳(最快且最可靠) → 将 3 个文件夹放入一个父文件夹中(例如 “Temp_30GB”),然后拷贝这一个父文件夹。
- 仍可接受但通常稍慢 → 同时选中所有 3 个文件夹并进行拷贝(并行)。
- 最差 → 拷贝一个文件夹 → 等待结束 → 拷贝下一个 → 等待 → 拷贝最后一个(除非这些文件夹的文件数量或大小模式差异极大)。
补充说明:
- 如果文件夹中主要是大文件(视频、Disk images、压缩包等)→ 差异通常很小。
- 如果文件夹中包含大量小文件 → 放入一个父文件夹会明显变快(有时快得非常明显)。
- 在极快的 NVMe SSD 到 SSD 的本地拷贝中,两者的差异通常很小(两种方式都很快)。
- 在 USB 3.0/3.1 Flash drive、外置 HDD 或网络拷贝上 → 单文件夹拷贝明显更可靠且通常更快。
- 如果你追求极致速度且不介意使用命令行 → 对父文件夹使用
cp -R或rsync -a,通常比 Finder 更快。
总结经验法则 (macOS Finder):
单次大型拷贝操作 > 多个文件夹的并行拷贝 > 一个接一个的顺序拷贝。
References:
- https://discussions.apple.com/thread/1211440
- https://superuser.com/questions/252959/which-is-faster-copying-everything-at-once-or-one-thing-at-a-time
- https://forums.macrumors.com/threads/what-is-the-best-most-reliable-way-to-copy-large-amounts-of-files-finder-or-the-terminal.2340198
- https://discussions.apple.com/thread/255971420