विशेष रूप से बालू के साथ डॉल्फिन को देखते हुए, यह अपने खोज डोमेन में प्रत्येक फ़ाइल के मेटाडेटा को देखने के लिए लगता है, भले ही आप एक साधारण फ़ाइल नाम खोज कर रहे हों। जब मैं file.so
प्रक्रिया का पता लगाता हूं , तो मैं हर फाइल के लिए कॉल करता हूं lstat
, getxattr
और getxattr
फिर ..
प्रविष्टियों के लिए भी देखता हूं । ये सिस्टम कॉल मेटाडेटा को उस फ़ाइल के बारे में पुनः प्राप्त करता है जो फ़ाइल नाम से अलग स्थान पर संग्रहीत होती है (फ़ाइल नाम निर्देशिका सामग्री में संग्रहीत होता है, लेकिन मेटाडेटा इनोड में हैं )। फ़ाइल का मेटाडेटा क्वेरी करना कई बार सस्ता है क्योंकि डेटा डिस्क कैश में होगा, लेकिन मेटाडेटा को क्वेरी करने और मेटाडेटा को क्वेरी नहीं करने के बीच एक महत्वपूर्ण अंतर हो सकता है।
find
बहुत अधिक चतुर है। यह अनावश्यक सिस्टम कॉल से बचने की कोशिश करता है। यह कॉल नहीं करेगा getxattr
क्योंकि यह विस्तारित विशेषताओं के आधार पर खोज नहीं करता है। जब यह किसी निर्देशिका को ट्रेस कर रहा होता है, तो इसे lstat
गैर-मिलान फ़ाइल नामों पर कॉल करने की आवश्यकता हो सकती है क्योंकि यह पुनरावर्ती खोज करने के लिए एक उपनिर्देशिका हो सकती है ( lstat
यह सिस्टम कॉल है जो फ़ाइल मेटाडेटा को लौटाता है जिसमें फ़ाइल प्रकार जैसे कि नियमित / निर्देशिका / सिमलिंक /…) शामिल है। हालाँकि find
इसका एक अनुकूलन है: यह जानता है कि एक निर्देशिका के पास अपनी लिंक गणना से कितनी उपनिर्देशिकाएँ हैं , और यह lstat
एक बार कॉल करना बंद कर देता है क्योंकि यह जानता है कि यह सभी उपनिर्देशिकाओं का पता लगाया है। विशेष रूप से, पत्ती निर्देशिका में (कोई उपनिर्देशिका वाली निर्देशिका),find
केवल नामों की जाँच करता है, मेटाडेटा की नहीं। इसके अलावा कुछ फाइल सिस्टम निर्देशिका प्रविष्टि में फ़ाइल प्रकार की एक प्रतिलिपि रखते हैं ताकि find
कॉल करने की आवश्यकता न हो, lstat
यदि केवल वही जानकारी हो जिसकी उसे आवश्यकता है।
यदि आप find
उन विकल्पों के साथ चलते हैं जिन्हें मेटाडेटा की जाँच की आवश्यकता होती है, तो यह अधिक lstat
कॉल करेगा, लेकिन यह तब भी lstat
किसी फ़ाइल पर कॉल नहीं करेगा यदि उसे जानकारी की आवश्यकता नहीं है (उदाहरण के लिए क्योंकि फ़ाइल को पिछली स्थिति से बाहर रखा गया है नाम पर मेल)।
मुझे संदेह है कि अन्य जीयूआई खोज उपकरण जो find
पहिया को फिर से संगठित करते हैं, कमांड लाइन उपयोगिता की तुलना में कम चतुर हैं जो अनुकूलन के दशकों से गुजरे हैं। डॉल्फिन, कम से कम, यदि आप "हर जगह" खोज के साथ डेटाबेस का उपयोग करने के लिए पर्याप्त चतुर हैं (सीमा के साथ जो यूआई में स्पष्ट नहीं है कि परिणाम पुराने हो सकते हैं)।