Jawabannya tidak sesederhana pilihan sistem file. Sistem file yang waras berhenti menggunakan daftar linear untuk direktori sejak lama, yang berarti bahwa jumlah entri dalam direktori tidak memengaruhi waktu akses file ....
kecuali ketika itu terjadi.
Faktanya, setiap operasi tetap cepat dan efisien tidak peduli jumlah entri, tetapi beberapa tugas melibatkan semakin banyak operasi. Tentunya, melakukan hal yang sederhana ls
membutuhkan waktu yang lama, dan Anda tidak melihat apa-apa sampai semua inode telah dibaca dan disortir. Melakukan ls -U
(tidak diurutkan) sedikit membantu karena Anda dapat melihat itu tidak mati, tetapi tidak mengurangi waktu secara perseptif. Yang kurang jelas adalah bahwa setiap ekspansi wildcard harus memeriksa setiap dan setiap nama file, dan tampaknya dalam kebanyakan kasus seluruh inode harus dibaca juga.
Singkatnya: jika Anda dapat yakin bahwa tidak ada aplikasi (termasuk akses shell) yang akan menggunakan wildard, maka Anda bisa mendapatkan direktori besar tanpa penyesalan. Tetapi jika mungkin ada beberapa wildcard yang bersembunyi di dalam kode, lebih baik simpan direktori di bawah seribu entri masing-masing.
edit :
Semua sistem file modern menggunakan struktur data yang baik untuk direktori besar, sehingga satu operasi yang harus menemukan inode dari file tertentu akan cukup cepat bahkan pada direktori besar.
Tetapi, sebagian besar aplikasi tidak hanya melakukan operasi tunggal. Sebagian besar dari mereka akan melakukan direktori lengkap atau pencocokan wildcard. Itu lambat, tidak peduli apa, karena melibatkan membaca semua entri.
Misalnya: katakanlah Anda memiliki direktori dengan sejuta file yang disebut 'foo-000000.txt' hingga 'foo-999999.txt' dan satu 'natalieportman.jpeg'. Ini akan cepat:
ls -l foo-123456.txt
open "foo-123456.txt"
delete "foo-123456.txt"
create "bar-000000.txt"
open "natalieportman.jpeg"
create "big_report.pdf"
ini akan gagal, tetapi gagal juga:
ls -l bar-654321.txt
open bar-654321.txt
delete bar-654321.txt
ini akan lambat, meskipun hasilnya sangat sedikit; bahkan yang gagal, gagal setelah memindai semua entri:
ls
ls foo-1234*.txt
delete *.jpeg
move natalie* /home/emptydir/
move *.tiff /home/seriousphotos/
homes/u/username, homes/j/joeblow,homes/s/somebody,...
?