বালুর সাথে বিশেষত ডলফিনের দিকে তাকানো দেখে মনে হচ্ছে এটির সন্ধান ডোমেনের প্রতিটি ফাইলের মেটাডেটা সন্ধান করা হবে, এমনকি আপনি যদি একটি সাধারণ ফাইল নাম অনুসন্ধান করেন তবে। যখন আমি ট্রেস file.soপ্রক্রিয়া, আমি কল দেখতে lstat, getxattrএবং getxattrআবার যে ফাইলের জন্য, এবং এমনকি জন্য ..এন্ট্রি। এই সিস্টেম কলগুলি ফাইলের নাম থেকে মেটাডেটা পুনরুদ্ধার করে যা ফাইলের নাম থেকে পৃথক স্থানে সঞ্চিত হয় (ফাইলের নাম ডিরেক্টরি সামগ্রীতে সংরক্ষিত থাকে তবে মেটাডেটা ইনোডে থাকে )। একাধিকবার কোনও ফাইলের মেটাডেটা জিজ্ঞাসা করা সস্তা, যেহেতু ডেটা ডিস্ক ক্যাশে থাকবে তবে মেটাটাটা জিজ্ঞাসা করা এবং মেটাটাটা অনুসন্ধান না করার মধ্যে একটি উল্লেখযোগ্য পার্থক্য থাকতে পারে।
findঅনেক বেশি চালাক। এটি অপ্রয়োজনীয় সিস্টেমের কলগুলি এড়ানোর চেষ্টা করে। এটি কল করবে না getxattrকারণ এটি বর্ধিত বৈশিষ্ট্যের ভিত্তিতে অনুসন্ধান করে না। যখন এটি কোনও ডিরেক্টরিকে ট্র্যাভার করে, তখন এটি lstatঅ-মিলের ফাইল নামগুলি কল করতে হতে পারে কারণ এটি পুনরাবৃত্তভাবে অনুসন্ধান করার জন্য একটি উপ-ডিরেক্টরি হতে পারে ( lstatনিয়মিত / ডিরেক্টরি / সিমলিংক /… এর মতো ফাইল টাইপ সহ ফাইল মেটাডেটা প্রত্যাবর্তনকারী সিস্টেম কল)) তবে findএকটি অপ্টিমাইজেশন রয়েছে: এটি একটি লিঙ্ক গণনা থেকে একটি ডিরেক্টরি কতগুলি উপ-ডিরেক্টরি আছে lstatতা জানে এবং এটি একবারে জেনে যায় যে এটি সমস্ত সাব-ডাইরেক্টরিগুলিকে অনুসরণ করেছে। বিশেষত, একটি পাতায় ডিরেক্টরিতে (কোনও ডিরেক্টরি ডিরেক্টরি নয়)findকেবলমাত্র নামগুলি পরীক্ষা করে, মেটাডেটা নয়। এছাড়াও কিছু ফাইল-সিস্টেম ডিরেক্টরি এন্ট্রি-তে ফাইল টাইপের একটি অনুলিপি findরাখে যাতে lstatকেবল এটির প্রয়োজনীয় তথ্য যদি কল করার প্রয়োজন হয় না ।
আপনি যদি findমেটাডেটা যাচাই করার জন্য প্রয়োজনীয় বিকল্পগুলি চালিয়ে যান lstatতবে এটি আরও কল করবে, তবে lstatতথ্যের প্রয়োজন না হলে এটি কোনও ফাইলে কল দেবে না (উদাহরণস্বরূপ কারণ ফাইলটি পূর্ববর্তী শর্ত দ্বারা বাদ দেওয়া হয়েছে) নামের সাথে মিলছে)।
আমি সন্দেহ করি যে অন্যান্য জিইআইআই অনুসন্ধান সরঞ্জামগুলি যে findচাকাটিকে পুনরায় উদ্বেগ করছে, একইভাবে কমান্ড লাইন ইউটিলিটির চেয়ে কম চালাক, যা কয়েক দশক ধরে অপ্টিমাইজেশন করেছে। ডলফিন, অন্ততপক্ষে, আপনি "সর্বত্র" অনুসন্ধান করলে ডেটাবেস ডাটাবেসটি ব্যবহার করার পক্ষে যথেষ্ট চালাক (সীমাবদ্ধতার সাথে যা ইউআইতে পরিষ্কার নয় যে ফলাফলগুলি পুরানো হতে পারে)।