MacOS Microsoft Word.app编辑大文件时对硬盘并不友好

WARNING: This article may be obsolete
This post was published in 2020-10-28. Obviously, expired content is less useful to users if it has already pasted its expiration date.

MacOS下的Microsoft Word.app在频繁修改大文件的时候,每一次“保存”都会对硬盘进行一次"100% IO"。比如一个100MB的文件,每次按下 ⌘+S ,Word.app都会向硬盘写入100MB。如果某些人(比如我)特别喜欢频繁按这个保存快捷键,那么一天下来Word.app可能会向硬盘写入好几个GB .

一个48.5MB的docx文档
使用Activity Monitor.app观察:修改文档前,Word.app的硬盘写入量为14.6MB
仅仅对这个文档执行了一次"Save",写入量就变成了81.3MB

如果word的设置里没有对图片的dpi进行限制(比如:不压缩图片,使用原图分辨率),那么一个包含大量图片的docx文件会变得非常大,很容易到达30MB甚至更大。

即使现在硬盘的SSD寿命非常长,Apple近几年设计不可拆卸更换SSD的macbook的趋势也让很多胆小的用户平时更加关注SSD健康状况。如果仅仅从“减小硬盘IO”的角度来看,对一篇包含大量图片的文档,看起来还是Markdown / LaTeX 等plain text格式更为友好一些。从这个角度来看Wordpress表现也不错,每次保存的时候只会在Mysql里执行一些SQL语句(比如insert+update整篇文章的文本),Media Files仍然原封不动。(如果wordpress部署在远程服务器,Mysql带来的硬盘IO也不需要考虑了)

Scrivener.app看起来和Word.app有点类似,都在对一个二进制文件进行读写操作——但事实上,Scrivener.app保存的文件是一个本质为文件夹的OSX package(老版本的OSX办公套件也是这么做的),而Word.app保存的.docx本质上是一个二进制文件(新版.docx是zip文件,老版.doc是私有格式的二进制文件),所以Scrivener在硬盘写入这方面要比word友好一些。

对于OSX自带的Pages.app等一系列办公套件,要观察它们的IO则要显得更困难一些,因为它们的IO行为集成到了系统其他进程中,最终在隐藏目录 .DocumentRevisions-V100 里保存一份又一份的文件历史记录副本。有的时候Sketch这样的非Apple.Inc制作的软件会在这个隐藏文件夹里占用大量空间(看起来像个全量备份),而Apple.Inc自家的软件显然表现要更为友好一些:它们至少不会像word.app那样,每保存一次就全盘写入一次(看起来像个增量备份)。

下面总结一些常见笔记软件的硬盘IO(假设我们在编辑一个拥有大量高清图片的文档,文件大小几十M,且编辑过程中频繁保存):

程序每保存一次的行为硬盘IO
macOS word.app(桌面程序)全量写入整个docx文件
Word网页版打开sharepoint文件由于文件存储在sharepoint服务器,所以只有少量http交互,
本地不保存完整docx文件
基本可以忽略不计
用macOS word桌面程序打开sharepoint文件虽然文件存储在sharepoint服务器,但本地仍然会保存一份完整的docx文件,每次保存都会全量写入整个docx文件
Google docs由于文件存储在Google drive,所以只有少量http交互基本可以忽略不计
WordPress(如果Wordpress部署在远程)只有少量http交互基本可以忽略不计
Scrivener.app理论上只写入文本(理论上)很低
Pages, Numbers等Apple套件被Apple优化过,可能比Word要好一些(未知)
Markdown, Latex等纯文本格式只写入文本基本可以忽略不计

 Last Modified in 2024-07-16 


Leave a Comment Anonymous comment is allowed / 允许匿名评论