大多数终端应用程序使用行缓冲来确保用户能够立即看到输出。在这种模式下,系统每遇到一个换行符就会刷新输出缓冲区。虽然这提供了响应式的体验,但当程序在短时间内生成大量输出时,就会产生性能瓶颈。例如,在使用 `unzip` 等工具解压存档时,打印每个独立文件名的过程可能会占据大部分执行时间,因为每个名称都需要一次单独的系统写入调用。这往往迫使用户使用“静默”模式来保持速度,从而牺牲了对进度的可见性。

为了解决这个问题,作者提出了一种“基于截止时间”的刷新机制。系统不再在每个换行符时触发写入,而是维护一个缓冲区,仅在特定的时间截止点到达时才将其刷新——例如每 100 毫秒刷新一次。这种方法受到处理网络通信中空闲时间的 Nagle 算法的启发。通过使用截止时间,如果文本行产生速度足够快,系统可以将多行文本合并到单次系统写入中。由于 100 毫秒通常快于人类的感知速度,用户几乎能立即看到输出,但多次系统调用的开销显著降低。

这种方法提供了行缓冲和全缓冲之间的折中方案。在处理数千个文件的程序等高吞吐量场景中,基于截止时间的方法允许程序“两全其美”:它能及时将行传递到终端以达到实时感,同时以接近全缓冲的速度运行。该实现可以通过在工作单元之间检查截止时间来集成到程序的主循环中。虽然这避免了使用额外线程的需求,但它要求应用程序感知缓冲状态,从而平衡输出延迟和处理吞吐量之间的权衡。然而,来源并未提供具体的基准数据来量化在这些场景下相比标准行缓冲的具体速度提升。