Я могу получить более быстрый выходной канал, чем/dev/null?

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

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

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

12
задан naugtur 27 April 2010 в 21:06
поделиться

2 ответа

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

21
ответ дан 2 December 2019 в 03:48
поделиться

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

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

18
ответ дан 2 December 2019 в 03:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: