知识卡片
压缩临时文件:磁盘I/O的节省超过了压缩计算的开销
内容
外部归并排序每趟都要完整读写整个临时文件,直觉上压缩会增加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%。"