В основном ваш код постоянно выполняет большую работу, чтобы время от времени пропускать sh символов. Так что это неэффективное использование процессорного времени. Вы можете попробовать запустить top
(в системе Unix), чтобы увидеть, сколько ресурсов процессора потребляет этот подход.
В целом процессорное время в наши дни невероятно дешево. Но я бы не стал писать такой код - это слишком расточительно. Возможно, я слишком придерживаюсь этого мнения.
Возможно, было бы менее расточительно просто отключить буферизацию ваших выходных файлов. Я не уверен, почему вы так настаиваете на буферизации, поскольку на самом деле вы не используете ее много. реализация. Поэтому он недоступен (или не так легко доступен) для пользовательского кода. другой механизм. Но я ни о чем не могу сразу думать.