줄 단위 버퍼링은 이제 그만, 터미널 출력도 전속력으로

We can do better than line-buffered output

터미널로 출력할 때 구현체는 보통 줄 단위 버퍼링을 골라 매 줄마다 flush하는데, 작은 파일을 많이 푸는 unzip 같은 프로그램에서는 이것이 곧 병목이 된다. 저자는 줄바꿈 대신 마감 시간을 두고, 예컨대 100ms 동안 버퍼가 놀았을 때만 flush하는 방식을 제안한다. 짧은 작업 사이사이에 이 검사를 끼워 넣으면 스레드 없이도 사람이 눈치채지 못할 만큼 즉시 출력되면서 fully-buffered에 가까운 속도를 얻는다.

줄 단위 버퍼링은 비대화형 터미널 애플리케이션에서 흔한 병목이라, 이를 피하려고 출력을 파일이나 파이프로 돌리는 것도 worth it일 정도다. 꼭 그럴 필요는 없다.

이 날의 다른 글

2026-11-05