Линейная буферизация вывода тормозит программы — и это можно исправить

We can do better than line-buffered output

Автор разбирает, почему линейная буферизация вывода в терминале становится узким местом: glibc буквально сбрасывает буфер на каждом переводе строки, а CPython — при появлении символа новой строки в буфере. Вместо этого он предлагает подход по мотивам алгоритма Нейгла: сбрасывать буфер, если он простаивал около 100 мс. Так строки доходят до пользователя почти мгновенно, но без лишних системных вызовов — на примере собственной утилиты tugz.

Мы можем и рыбку съесть, и на поезде прокатиться: оперативно доставлять строки в терминал на скорости полной буферизации.

Ещё за этот день

2026-11-05