Могу ли я получить более быструю выходную трубу, чем / dev / null?

StackOverflow https://stackoverflow.com/questions/2725144

  •  02-10-2019
  •  | 
  •  

Вопрос

Я использую огромную задачу [автоматизированное перевод сценариев с базой данных Perl + и т. Д.] Для проведения примерно 2 недель не остановка. Подумав, как ускорить его, я увидел, что переводчик выводит все (все переведенные предложения, вся информация в пути) в Stdout все время. Это делает его заметно медленным, когда я получаю вывод на консоли.

Я, очевидно, побудил вывод к /dev/null, но потом я думал: «Можно было что-то еще быстрее?» Это так много выходов, что это действительно имеет значение.

И вот вопрос, который я спрашиваю вас, потому что, насколько я знаю, нет ничего быстрее ... (но я далеко не будучи гуру, который использовал Linux на ежедневной основе только последние 3 года)

Это было полезно?

Решение

Выход к / dev / null реализован в ядре, который довольно быстро. Выходная труба не ваша проблема сейчас, настало время, необходимое для создания строк, которые отправляются в / dev / null. Я бы порекомендовал вам пройти программу и прокомментировать (или охранять с if $be_verbose) Все строки, которые являются бесполезными печатающими заявлениями. Я уверен, что даст вам заметную скорость.

Другие советы

Я могу (через dd) сбросить 20 гигабайт данных в секунду / dev / null. Это не ваше узкое место :-P

В значительной степени единственный способ сделать его быстрее - не генерировать данные в первую очередь - полностью удалите операторы журнала. Стоимость производства всех сообщений журнала, вероятно, превышает стоимость отбрасывания их довольно немного.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top