फाइलसिस्टम की पसंद के रूप में जवाब उतना आसान नहीं है। Sane filesystems ने निर्देशिकाओं के लिए रैखिक सूचियों का उपयोग करना बहुत पहले ही बंद कर दिया था, जिसका अर्थ है कि निर्देशिका में प्रविष्टियों की संख्या फ़ाइल पहुंच के समय को प्रभावित नहीं करती है ...।
सिवाय इसके कि यह कब होता है।
वास्तव में, प्रत्येक ऑपरेशन तेज और कुशल रहता है, चाहे प्रविष्टियों की संख्या कितनी भी हो, लेकिन कुछ कार्यों में संचालन की बढ़ती संख्या शामिल होती है। जाहिर है, एक सरल कार्य करने में ls
लंबा समय लगता है, और जब तक सभी आयतों को पढ़ा और क्रमबद्ध नहीं किया जाता है, तब तक आप एक चीज़ नहीं देखते हैं। डूइंग ls -U
(अनसोल्ड) थोड़ी मदद करता है क्योंकि आप देख सकते हैं कि यह मृत नहीं है, लेकिन अवधारणात्मक रूप से समय को कम नहीं करता है। कम स्पष्ट है कि किसी भी वाइल्डकार्ड विस्तार को प्रत्येक फ़ाइल नाम की जांच करनी होती है, और ऐसा लगता है कि ज्यादातर मामलों में पूरे इनोड को भी पढ़ना पड़ता है।
संक्षेप में: यदि आप सकारात्मक रूप से सुनिश्चित कर सकते हैं कि कोई भी एप्लिकेशन (शेल एक्सेस सहित) कभी भी किसी वाइल्डर्ड का उपयोग नहीं करेगा, तो आप बिना किसी पश्चाताप के विशाल निर्देशिका प्राप्त कर सकते हैं। लेकिन अगर कुछ वाइल्डकार्ड कोड में दुबके हो सकते हैं, तो बेहतर होगा कि एक हजार प्रविष्टियों के नीचे निर्देशिका रखें।
संपादित करें :
सभी आधुनिक फ़ाइल सिस्टम, बड़े निर्देशिका के लिए अच्छा डेटा संरचनाओं उपयोग करती हैं इसलिए एक भी आपरेशन है कि एक के inode लगाने के लिए विशिष्ट फ़ाइल भी humongous निर्देशिकाओं पर काफी तेजी से किया जाएगा।
लेकिन, अधिकांश एप्लिकेशन केवल एकल-संचालन नहीं करते हैं। उनमें से ज्यादातर या तो एक पूर्ण निर्देशिका या वाइल्डकार्ड-मिलान करेंगे। वे धीमे हैं, चाहे कुछ भी हो, क्योंकि उनमें सभी प्रविष्टियों को पढ़ना शामिल है।
उदाहरण के लिए: मान लें कि आपके पास 'foo-999999.txt' और 'natalieportman.jpeg' के माध्यम से 'foo-000000.txt' नामक एक लाख फाइलों के साथ एक निर्देशिका है। ये होंगे तेज:
ls -l foo-123456.txt
open "foo-123456.txt"
delete "foo-123456.txt"
create "bar-000000.txt"
open "natalieportman.jpeg"
create "big_report.pdf"
ये असफल होंगे, लेकिन तेजी से असफल भी होंगे:
ls -l bar-654321.txt
open bar-654321.txt
delete bar-654321.txt
ये धीमे होंगे, भले ही वे बहुत कम परिणाम दें; यहां तक कि जो असफल होते हैं, वे सभी प्रविष्टियों को स्कैन करने के बाद विफल होते हैं:
ls
ls foo-1234*.txt
delete *.jpeg
move natalie* /home/emptydir/
move *.tiff /home/seriousphotos/
homes/u/username, homes/j/joeblow,homes/s/somebody,...
?