Слова количества: что будет использовать меньше ЦП, туалета или сценарий жемчуга?

То, что Вы предложили, должно на самом деле работать:

rsync -rzvvhP remotehost:/home/tmp/1\* /home/tmp/

(Можно сойти с рук не заключение в кавычки * при большинстве обстоятельств, как шаблон remotehost:/home/tmp/1\* вряд ли будет соответствовать любому файлу, таким образом, он будет оставлен наедине с большинством установок оболочки.)

Ваша попытка с --exclude='*' отказавший, потому что первое соответствие применяется, и Ваше первое соответствие для всего (*) говорит для исключения.

См. это руководство для некоторых общих принципов о фильтрах rsync. Здесь, для включения только начала каталогов 1 на верхнем уровне и копии все во включенных подкаталогах, включают /1 затем исключите /*.

rsync -rzvvhP --include='/1' --exclude='/*' remotehost:/home/tmp/ /home/tmp/

0
29.10.2013, 16:06
3 ответа

Я подозреваю это wc будет использовать меньше процессорного времени, оно записано в C и тщательно оптимизировалось со временем. Однако нет никакой причины не протестировать это самостоятельно. time позволит Вам сравнить производительность своего сценария жемчуга против wc. Используя time команда, Вы должны быть произведены как:

> time wc /usr/share/dict/words
 119095  119095 1145922 /usr/share/dict/words
wc /usr/share/dict/words  0.03s user 0.00s system 98% cpu 0.030 total

В этом случае, wc используемый 0,030 секунды процессорного времени всего.

5
28.01.2020, 02:13

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

Это только, когда необходимо начать объединять несколько "команд" в цепочку, вместе делает имеет смысл переходить решение от объединения в цепочку их вместе, к решению проблемы на высокоуровневом языке, таком как Perl, Python или Ruby.

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

2
28.01.2020, 02:13

Я соглашаюсь с @wingedsubmariner, wc почти наверняка будет быстрее, чем какая-либо версия жемчуга, которую Вы готовите:

$ /usr/bin/time -f "%Uuser %Ssystem %Eelapsed %PCPU" wc /usr/share/dict/words
 99171  99171 938848 /usr/share/dict/words
0.02user 0.00system 0:00.02elapsed 86%CPU
$ /usr/bin/time -f "%Uuser %Ssystem %Eelapsed %PCPU" \
  perl -ane '$k+=$#F+1; END{print "$k\n"}' /usr/share/dict/words
99171
0.09user 0.00system 0:00.09elapsed 96%CPU
2
28.01.2020, 02:13

Теги

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