यह अपने डेटा पर निर्भर करता है।
कोई सामान्य मामला वास्तव में नहीं है। उदाहरण के लिए, आम तौर पर पूरी कुंजीसेट को एक बार में पुनर्प्राप्त करना प्रत्येक कुंजी को अलग-अलग शामिल करने की तुलना में तेज़ होता है। हालांकि, यदि आपके डेटासेट में, चाबियाँ अधिक से अधिक भिन्न नहीं होती हैं, तो एक धीमी समाधान जो तेजी से विफल हो जाता है तेज़ी से हो सकता है। उदाहरण के लिए:
h1.size == h2.size and h1.keys.all?{|k|h2.include?(k)}
विचार करने का एक अन्य कारक आपके हैंश का आकार है। वे उच्च सेटअप लागत के साथ एक समाधान है, Set.new
बुला जैसे बड़े कर रहे हैं, का भुगतान हो सकता है, लेकिन वे छोटे हैं, ऐसा नहीं होगा: और
h1.size == h2.size and Set.new(h1.keys) == Set.new(h2.keys)
आप पर एक ही अपरिवर्तनीय हैश तुलना करने के लिए होगा अगर फिर, यह निश्चित रूप से परिणामों को कैश करने के लिए भुगतान करेगा।
आखिरकार केवल एक बेंचमार्क बताएगा, लेकिन, एक बेंचमार्क लिखने के लिए, हमें आपके उपयोग के मामले के बारे में और जानना होगा। निश्चित रूप से, सिंथेटिक डेटा के साथ समाधान का परीक्षण (उदाहरण के लिए, यादृच्छिक रूप से जेनरेट की गई कुंजी) प्रतिनिधि नहीं होंगे।
बस इस प्रश्न पर कम से कम एक बेंचमार्क होने की खातिर
क्या आपने इसकी तुलना 'h1.keys.sort == h2.keys.sort' से की थी? –
मैंने सीमित उदाहरण के साथ किया था। 'h1.keys.sort == h2.keys.sort' थोड़ा धीमा था। लेकिन मुझे यकीन नहीं है कि यह सामान्य रूप से मामला है। – sawa
मुझे लगता है कि आपको उस प्रश्न में उल्लेख करना चाहिए। और मैं भी प्रश्न के हिस्से के रूप में समाधान पोस्ट करूंगा, जवाब के रूप में नहीं। –