Да, в некоторых случаях это улучшает производительность.
По умолчанию find
применяет логические AND к своим тестам, но последний тест не оценивается, если первый равен false. Таким образом, если вы добавите супер быстрый тест, который почти всегда дает сбой в самом начале, он может сохранить множество выполнений следующих (скажем, медленных) тестов, и в этом случае этот дополнительный тест действительно повышает производительность.
Перейдите в каталог с большим количеством файлов и несколькими символическими ссылками. сравнить
time find -exec test -L {} \; -print
в
time find -type l -exec test -L {} \; -print
Это искусственный, но поучительный пример. Два теста (-type l
и -exec test -L {} \;
) выполняют одинаковую работу, две команды find
дают одинаковые результаты. Однако -exec
создает дополнительный процесс, и это относительно медленно. В моем домашнем каталоге первая команда занимает две минуты; вторая команда занимает шесть секунд.