Влияет, но смотря сколько файлов. Индексируются хеши файлов, поэтому довольно быстро можно найти файл.
Разница между 100 и 1000 файлов будет минимальна (менее процента)
Разница между 100 и 1.000.000 файлов будет немного заметна, но только пока блоки содержащие директорию не закешируются в памяти.
По сравнению с ext3, ext4 ОЧЕНЬ сильно оптимизировала работу с множеством файлов.
Ниже
edo1h привел пример теста, но он некорректно использовал внешнюю команду, получив основную нагрузку на процессор, а не на диск. Мой комментарий вышел слишком длинный поэтому решил его в ответ добавить:
spoilerДавайте померяем еще раз вашим скриптом, а потом более правильным:
$ test() { for A in `seq 1 10000`; do touch $RANDOM.$RANDOM.$A; done }
$ time test
real 0m8.406s
user 0m5.939s
sys 0m2.548s
$ time test
real 0m7.943s
user 0m5.699s
sys 0m2.333s
$ time test
real 0m7.929s
user 0m5.647s
sys 0m2.369s
Как мы видим, ничего особо не видно. Непонятно быстрее или медленнее. Вдобавок user time занимает основную часть времени и видимо сильно влияет на результат.
Перепишем скрипт:
$ test1() { for A in `seq 1 10000`; do echo "" > $RANDOM.$RANDOM.$A; done }
Почистим файлы и попробуем заново
$ rm -rf *
$ time test1
real 0m0.310s
user 0m0.111s
sys 0m0.196s
Сразу остановимся и увидим, что теперь у нас основное время это именно sys, а не user тайм, то есть уже чаще скрипт ждет пока выполнятся дисковые операции, а не дисковые операции ждут пока им дадут команду что-то делать. Повторим команду несколько раз:
$ time test1
real 0m0.331s
user 0m0.101s
sys 0m0.229s
$ time test1
real 0m0.331s
user 0m0.129s
sys 0m0.200s
$ time test1
real 0m0.402s
user 0m0.118s
sys 0m0.229s
$ time test1
real 0m0.324s
user 0m0.087s
sys 0m0.236s
$ time test1
real 0m0.382s
user 0m0.129s
sys 0m0.253s
$ time test1
real 0m0.387s
user 0m0.102s
sys 0m0.283s
$ time test1
real 0m0.421s
user 0m0.115s
sys 0m0.299s
$ time test1
real 0m0.465s
user 0m0.115s
sys 0m0.312s
$ time test1
real 0m0.465s
user 0m0.139s
sys 0m0.324s
$ time test1
real 0m0.467s
user 0m0.139s
sys 0m0.327s
$ time test1
real 0m0.553s
user 0m0.156s
sys 0m0.365s
$ time test1
real 0m0.560s
user 0m0.194s
sys 0m0.364s
Итоги: видно что кеширование где-то работает, но с каждыми новыми файлами тенденция к замедлению есть, и она всего лишь через несколько десятков тысяч файлов увеличилась почти в полтора раза.
То есть задолго до миллиона я получу замедление в несколько раз. Но это на моей виртуалке. На каждом оборудовании надо тестировать индивидуально.