Линейная буферизация вывода тормозит программы — и это можно исправить
We can do better than line-buffered output
Автор разбирает, почему линейная буферизация вывода в терминале становится узким местом: glibc буквально сбрасывает буфер на каждом переводе строки, а CPython — при появлении символа новой строки в буфере. Вместо этого он предлагает подход по мотивам алгоритма Нейгла: сбрасывать буфер, если он простаивал около 100 мс. Так строки доходят до пользователя почти мгновенно, но без лишних системных вызовов — на примере собственной утилиты tugz.
Мы можем и рыбку съесть, и на поезде прокатиться: оперативно доставлять строки в терминал на скорости полной буферизации.