Могу ли я получить более быструю выходную трубу, чем / dev / null?
-
02-10-2019 - |
Вопрос
Я использую огромную задачу [автоматизированное перевод сценариев с базой данных Perl + и т. Д.] Для проведения примерно 2 недель не остановка. Подумав, как ускорить его, я увидел, что переводчик выводит все (все переведенные предложения, вся информация в пути) в Stdout все время. Это делает его заметно медленным, когда я получаю вывод на консоли.
Я, очевидно, побудил вывод к /dev/null
, но потом я думал: «Можно было что-то еще быстрее?» Это так много выходов, что это действительно имеет значение.
И вот вопрос, который я спрашиваю вас, потому что, насколько я знаю, нет ничего быстрее ... (но я далеко не будучи гуру, который использовал Linux на ежедневной основе только последние 3 года)
Решение
Выход к / dev / null реализован в ядре, который довольно быстро. Выходная труба не ваша проблема сейчас, настало время, необходимое для создания строк, которые отправляются в / dev / null. Я бы порекомендовал вам пройти программу и прокомментировать (или охранять с if $be_verbose
) Все строки, которые являются бесполезными печатающими заявлениями. Я уверен, что даст вам заметную скорость.
Другие советы
Я могу (через dd
) сбросить 20 гигабайт данных в секунду / dev / null. Это не ваше узкое место :-P
В значительной степени единственный способ сделать его быстрее - не генерировать данные в первую очередь - полностью удалите операторы журнала. Стоимость производства всех сообщений журнала, вероятно, превышает стоимость отбрасывания их довольно немного.