知识卡片

压缩临时文件:磁盘I/O的节省超过了压缩计算的开销

普通读书笔记卡 · 1227.b

内容

外部归并排序每趟都要完整读写整个临时文件,直觉上压缩会增加CPU开销。但实测反直觉:压缩后文件体积缩小到不足1/8,磁盘传输时间从每趟一小时降到十分钟量级,而解压+再压缩增加的CPU时间不过一个多小时——I/O节省的时间远超压缩计算多花的时间,总耗时反而更短。原因是磁盘顺序传输速度和CPU处理速度存在数量级落差,压缩本质是用CPU周期换磁盘I/O量,只要CPU比磁盘快得多这笔交易就划算。

参考来源

- 位置:第5章《索引构造》「压缩临时文件」小节(源文件:_chapter-text/ch05.txt) - 结论依据:原文给出压缩临时文件后磁盘传输时间从1小时降到10分钟、压缩解压增加约90分钟的具体数据,说明总耗时反而更短,直接支持卡片论点。 - 原始内容:"当临时文件未压缩时,每趟需要读写540MB,磁盘传输时间从1个小时降低到10分钟。为了获得这个好处,每趟必须解压(decompress)和再压缩(recompress)540MB……大约需要增加90分钟……使用压缩可以将磁盘空间的需求降低到原来的1/8,而处理器时间提高了大约25%。"