Saya memiliki 100.000 file dalam direktori di MacOS X saya dan terlihat lambat bagi skrip saya untuk membaca file di dalamnya.
Apakah ada batasan atau rekomendasi untuk memiliki banyak file? Haruskah saya membaginya ke beberapa direktori?
Keterbatasan yang saya temukan adalah bahwa saya tidak bisa mv * foo
untuk semua 100.000 file. Ini menunjukkan kesalahan, mengatakan "argumen terlalu panjang." Ini bekerja dengan sekitar kurang dari 20.000 file.
macos
mac
filesystems
Daisuki Honey
sumber
sumber
*
atau?
sebagai bagian dari argumen ke perintah, sistem operasi mencari seluruh direktori untuk file yang cocok (lambat), dan kemudian menggantikan argumen Anda dengan daftar setiap file yang cocok (panjang), yang kemudian diteruskan ke perintah. Anda mungkin melakukan yang lebih baik dengan loop atau dengan beberapa perintah mv, misalnyamv a* foo && mv b* foo
,.Jawaban:
Menurut jawaban Stack Overflow ini dan perincian spesifik di situs Apple , folder individual dapat berisi hingga 2,1 miliar item.
Yang mengatakan, hanya karena dapat menyimpan hingga 2,1 miliar item tidak berarti dapat mempertahankan kinerja pada tingkat itu. Menurut Wikipedia ; penekanan adalah milikku:
Jadi kinerjanya menurun secara alami berkat fakta bahwa file katalog hanya dapat digunakan oleh satu program pada satu waktu. Dan jika direktori tumbuh dalam ukuran, risiko / degradasi yang disebabkan oleh masalah itu hanya akan meningkat; lebih banyak file berarti lebih banyak kesempatan bagi program untuk mengakses file dalam satu direktori itu. Konfirmasi lebih lanjut dari gagasan itu di sini ; lagi-lagi penekanan adalah milikku:
sumber
Jawaban Singkat: Ya, jika Anda membaca 100.000 file, saya mungkin berharap skripnya lambat.
Jawaban Panjang: Untuk menjawab pertanyaan ini lebih menyeluruh, Anda harus melihat sistem file pada Mac. Mac menggunakan HFS + ( Hierarchical File System Plus ), yang merupakan sistem file modern yang memiliki keterbatasan, tetapi hanya dalam situasi ekstrem.
Dari pengalaman saya, ini sangat mirip dengan sistem file journaling Linux EXT. Ini mendukung direktori pemasangan, izin seperti UNIX, dll. Ini membahas file dalam format 32-bit, membuat jumlah maksimum file yang dapat disimpan dalam volume 4.294.967.295, menurut sumber ini .
Sistem file mulai rusak dengan file yang lebih besar dari 8 EB pada sistem modern dan hingga 2,1 miliar file dan folder di satu lokasi sebagaimana diuraikan di sini .
Mengingat cara HFS + —atau benar-benar ada sistem file mana pun yang mengaturnya — memiliki banyak file di folder seharusnya tidak melakukan sesuatu yang 'aneh'.
Sejujurnya, saya tidak berpikir akan ada peningkatan kinerja mendistribusikan file di hierarki folder yang lebih kompleks. Sebenarnya, teknik ini mungkin kurang efisien karena skrip Anda harus membuat panggilan untuk mengubah direktori pada pertengahan proses.
sumber