cat/Xargs/command VS для/колотить/управлять

Я соглашаюсь, что все ответы до сих пор корректны, но вот причина. C Microsoft и компиляторы C++ предоставляют различные соглашения о вызовах для (намеченной) скорости вызовов функции в и функциях C++ приложения C. В каждом случае вызывающая сторона и вызываемый должны договориться который соглашение о вызовах использовать. Теперь, сам Windows обеспечивает функции (API), и они были уже скомпилированы, поэтому когда Вы называете их, необходимо соответствовать им. Любые вызовы к Windows APIs и обратные вызовы из Windows APIs, должны использовать __ stdcall конвенция.

5
задан Léo Léopold Hertz 준영 17 August 2009 в 04:11
поделиться

6 ответов

Из раздела «Обоснование» справочной страницы UNIX для xargs . (Интересно, что этот раздел не появляется ни в версии OS X BSD xargs , ни в версии GNU.)

Классическое приложение xargs утилита в сочетании с найти утилиту для уменьшения количества процессы, запущенные упрощенным использованием комбинации find -exec. В Утилита xargs также используется для обеспечения верхний предел памяти, необходимый для запустить процесс. На этой основе в Обратите внимание, этот том POSIX.1-2008 выбраны только минимальные функции требуется.

В дальнейшем вы спрашиваете, сколько вилок будет у другой версии. Джим уже ответил на этот вопрос : по одному на итерацию. Сколько существует итераций? Точное число назвать невозможно, но на общий вопрос легко ответить. Сколько строк в вашем файле url-list.txt?

Есть и другие соображения. xargs требует особого внимания к именам файлов с пробелами или другими запрещенными символами, а -exec имеет параметр ( + ), который группирует обработку в пакеты. Итак, не все предпочитают xargs , и, возможно, это не лучший вариант для всех ситуаций.

См. Эти ссылки:

4
ответ дан 18 December 2019 в 08:29
поделиться

Также рассмотрите:

xargs -I'{}' wget -c '{}' < url-list.txt

но wget предоставляет еще лучшие средства для того же:

wget -c -i url-list.txt

Что касается рассмотрения xargs по сравнению с циклом, я предпочитаю xargs, когда значение и реализация относительно " просто "и" ясно ", в противном случае я использую циклы.

4
ответ дан 18 December 2019 в 08:29
поделиться

xargs предназначен для обработки нескольких входных данных для каждого процесса, который он разветвляет. Сценарий оболочки с циклом for по входам должен разветвлять новый процесс для каждого входа. Избежание этих накладных расходов на процесс может дать решению xargs значительное повышение производительности.

4
ответ дан 18 December 2019 в 08:29
поделиться

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

Я не совсем эксперт по bash. , так что могут быть другие причины, по которым так лучше (или хуже).

0
ответ дан 18 December 2019 в 08:29
поделиться

xargs также позволит вам иметь огромный список, что невозможно с версией "for", поскольку оболочка использует командные строки ограниченной длины.

4
ответ дан 18 December 2019 в 08:29
поделиться

В зависимости от вашего интернет-соединения вы можете использовать GNU Parallel http://www.gnu.org/software/parallel/ для параллельного запуска.

cat url-list.txt | parallel wget -c
1
ответ дан 18 December 2019 в 08:29
поделиться
Другие вопросы по тегам:

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