Существует всего лишь один способ определить оптимальный размер блока, и это - сравнительный тест. Я только что сделал быстрый сравнительный тест. Тестовой машиной является ПК, выполняющий Debian GNU/Linux с ядром 2.6.32 и coreutils 8.5. Обе включенные файловых системы являются ext3 на объемах LVM на разделе жесткого диска. Исходный файл составляет 2 ГБ (2040000 КБ, чтобы быть точным). Кэширование и буферизация включены. Перед каждым выполнением я освободил кэш с sync; echo 1 >|/proc/sys/vm/drop_caches
. Время выполнения не включает финал sync
сбросить буферы; финал sync
берет порядок 1 секунды. same
выполнения были копиями в той же файловой системе; diff
выполнения были копиями к файловой системе на другом жестком диске. Для непротиворечивости времена, о которых сообщают, являются стеной, показывают время, полученное с time
утилита, в секундах. Я только выполнил каждую команду однажды, таким образом, я не знаю, сколько различия там находится в синхронизации.
same diff
dd bs=64M 71.1 51.3
dd bs=1M 73.9 41.8
dd bs=4k 79.6 48.5
dd bs=512 85.3 48.9
cat 76.2 41.7
cp 77.8 45.3
Заключение: большой размер блока (несколько мегабайтов) помогает, но не существенно (намного меньше, чем я ожидал для копий того-же-диска). И cat
и cp
не выполняйте так плохо. С этими числами я не нахожу dd
стоящий беспокойства. Пойдите с cat
!
Можно добавить completer к списку completers, используемого по умолчанию:
zstyle ':completion:*' completer _last_command_args _complete
_last_command_args
завершения, другие не показывают. Как Вы получаете их в дополнение к обычным? – Gilles 'SO- stop being evil' 20.01.2011, 23:06_complete
в функции я создал, и она работает точно так же, как я хотел ее к. – Ted Naleid 21.01.2011, 07:02